visual studio remote from git visual-studio tfs

studio - tfs git repository



Usar Git con TFS 2017-Funciona en Visual Studio pero no en Command Line (3)

Recientemente hicimos el cambio a Team Foundation Server 2017 usando Git para nuestros proyectos. Nuestro TFS funciona bastante bien si lo utilizamos a través de la interfaz web oa través de Visual Studio, pero si intentamos usar una herramienta de terceros como Sourcetree, extensiones de Git o incluso la línea de comandos, obtenemos un error: Error de fatal: Authentication failed for https://[path_to_repo] . SSH funciona bien, pero queremos usar HTTPS porque SSH todavía no es compatible con Visual Studio.

He desinstalado git de mi máquina y seguí las instrucciones proporcionadas en este enlace https://www.visualstudio.com/en-us/docs/git/share-your-code-in-git-cmdline , que prácticamente solo dice instala la última versión de git y asegúrate de que Enable Git Credential Manager esté habilitado (es). He notado que con git desinstalado de mi máquina, git en Visual Studio todavía funciona, lo que me lleva a creer que está usando su propia versión incrustada de git como lo hace Sourcetree.

Intenté desactivar todas las formas de autenticación en IIS en nuestro sitio web TFS para que solo acepte la Autenticación de Windows y el único proveedor sea NTLM, y la Protección extendida esté desactivada.

Nos gustaría seguir utilizando nuestras herramientas git de terceros junto al estudio visual lateral. Visual Studio agrega algunas buenas funcionalidades, pero todavía hay algunas operaciones que preferimos hacer en otras herramientas.

EDIT: pongo la versión incorrecta en el título / publicación. Estamos usando TFS 2017. Me disculpo, no estoy seguro de por qué cometí ese error.


Intenté crear un nuevo repositorio local de Git en VS, luego uso la línea de comando de git para enviarlo a un proyecto de equipo de git vacío en TFS 2015, no se produjo ningún error, puedes comparar tu paso con el mío:


La respuesta resultó ser un error de configuración en el lado del cliente. Por alguna razón, aunque hemos marcado la casilla para habilitar el gestor de credenciales de git durante la instalación de git, la variable global credential.helper=wincred no se configuró en ninguno de nuestros archivos de configuración. Establecer esa variable permitió que git nos avise y recuerde nuestras credenciales.

No estoy seguro si está relacionado, pero el instalador autónomo de Git Credential Manager también falla para nosotros en nuestras máquinas. No puede copiar ninguno de los archivos en nuestro directorio de instalación de git (C: / Program Files / Git). Tuve que habilitar el registro del administrador de credenciales de git para ver si estaba fallando porque parecía que estaba teniendo éxito. Abriré un problema con el administrador de credenciales de git para ver si pueden resolver esto.

EDITAR: Se ha abierto un error en Git Credential Manager para Windows con respecto a la propiedad credential.helper . Otro problema relacionado con Git ha salido a la luz también.

La propiedad para usar GCM es credential.helper=manager not wincred . Sin embargo, el manager no funcionó en Git v 2.11.0. La autenticación NTLM parece ser un problema conocido, al menos en el lado GCM de las cosas, y se recomienda que intente cambiar a la versión 2.10.1 de Git. Una vez que bajé la calificación, pude establecer la propiedad antes mencionada como manager y funcionó correctamente.


wincred podría ser más robusto con Git 2.15.x / 2.16 (Q1 2018) con una actualización MinGW.

Ver commit 601e1e7 , commit 3c90bda (30 Oct 2017) por Jakub Bereżański (``) .
(Fusionada por Junio ​​C Hamano - gitster - en commit 55b5d92 , 09 nov 2017)

wincred : manejar el nombre de usuario / contraseña vacíos correctamente

Los nombres de usuario y / o las contraseñas vacías (longitud 0), cuando se guardan en el Administrador de credenciales de Windows, vuelven como nulas al leer la credencial.

Un caso de uso para tales credenciales vacías es con la autenticación NTLM, donde el nombre de usuario y la contraseña vacíos instruyen a libcurl para que se autentique usando las credenciales del usuario actualmente conectado (inicio de sesión único) .

Al ubicar las credenciales relevantes, haga que el nombre de usuario vacío coincida nulo.
Al enviar las credenciales, maneje los valores nulos correctamente.