¿Cómo hacer que TFS 2010 detecte cambios realizados en archivos fuera de Visual Studio?

118

Estoy usando Team Foundation Server 2010 con Visual Studio 2010.

Siempre que modifico un archivo fuera de Visual Studio, TFS no parece detectar el cambio realizado en el archivo y, por lo tanto, no me ofrece la opción de registrar el archivo después de que se haya modificado.

¿Cómo se puede solucionar esto?

asmo
fuente
18
Subversion o Git (y tal vez otros) están comparando hashes de archivos en lugar de API para registrar / retirar un archivo. ¡Mucho más simple y mucho menos riesgoso!
Steve B
8
peor aún, TFS ni siquiera notó que un archivo cambiado necesita ser registrado, por lo que a menudo puede olvidarlo ... hasta que su colega lo revisa y se da cuenta de que su código no se compila ni funciona. No es de extrañar que la gente diga que TFS es "VSS con esteroides", mejor, pero todavía tiene muchos de los problemas de VSS.
gbjbaanb
Es VSS con esteroides, de la misma manera que los esteroides destruyen su cuerpo.
Ian Kemp

Respuestas:

48

Si tiene una conexión de red a su servidor mientras trabaja fuera de Visual Studio, probablemente sea mejor seguir adelante y verificar el archivo antes de editarlo, ya sea usando el cliente de línea de comandos tf o usando la integración de shell del Explorador de Windows que es disponible en la versión TFS Power Tools . (Además, un número cada vez mayor de otras herramientas tienen integración TFS que hace que esto sea automático, pero si solo está usando el bloc de notas, esto debe ser un paso manual).

Por supuesto, hay muchas ocasiones en las que está trabajando y no tiene una conexión de red disponible que le permita verificar los archivos.

Si sabe qué archivos ha modificado, puede verificarlos desde Visual Studio y luego podrá volver a verificarlos.

Si no sabe qué archivos ha editado, puede detectar los cambios ejecutando el tfpt onlinecomando (también parte de la versión de Power Tools). Esto localizará los archivos que se han modificado localmente y los revisará en el servidor.

Edward Thomson
fuente
Visual Studio no parece detectar cambios en los archivos con solo revisarlos. Intenté revisar una carpeta y el contenido apareció en cambios pendientes como ediciones. Luego eliminé la carpeta en el Explorador de archivos y actualicé los cambios pendientes, pero Visual Studio no dijo que los archivos se eliminaron en los cambios pendientes. Además, los archivos todavía estaban presentes en el Explorador de soluciones.
Kyle Delaney
160

TFS tiene un comando "Reconciliar" para esto:

  1. Abra el Explorador de control de código fuente
  2. Haga clic derecho en la carpeta con los cambios y elija Comparar
  3. Seleccione los archivos que desea conciliar (presione CTRL+ Apara seleccionar todos los archivos)
  4. Haga clic en el botón Reconciliar
  5. Configure las opciones en el cuadro de diálogo Conciliar diferencias de carpeta . Asegúrese de que los Archivos que no tienen cambios pendientes estén configurados en Desproteger
  6. Haga clic en Aceptar
  7. Si tiene cambios locales , se mostrará el cuadro de diálogo Desproteger . Establecer el tipo de bloqueo preferido
  8. Haga clic en Check Out

Conciliar las diferencias de carpetas

Ver también: Reconciliar diferencias entre carpetas

mhu
fuente
13
Esta es la mejor respuesta ya que no requiere la línea de comando o un arriesgado 'Deshacer cambios pendientes'.
NickH
4
¡Salvó mi día! Seguí tus pasos con precisión y funcionó exactamente como se esperaba. :-)
Gilad Barner
4
Trabajó como se describe. Debería ser la mejor respuesta.
Nicolas
Desafortunadamente, al hacer esto en todo mi proyecto, aparece el error La ruta especificada, el nombre de archivo o ambos son demasiado largos. El nombre completo debe tener menos de 260 caracteres y el nombre del directorio debe tener menos de 248 caracteres. Seleccionar carpetas individuales no es una opción para mí, porque no puedo recordar todos los directorios de archivos que he cambiado. ¿Alguna idea?
kraftwer1
2
Funcionando perfectamente en VS 2015 actualización 3, muchas gracias. Debería ser la mejor respuesta, sin comandos complicados para que funcione
Nicolas Leucci
35

Esto funcionó para mí, usando TFS Power Tools:

tfpt online /adds /deletes /diff /noprompt /recursive directory-name

(donde nombre-directorio es la ruta al directorio que se actualizará; de lo contrario, detectará cambios en todo el repositorio TFS)

Si desea saber qué haría sin que realmente hiciera ningún cambio, puede forzarlo a realizar una prueba agregando el /previewinterruptor.

Adam Batkin
fuente
Gracias por el consejo @Adam Batkin. ¡Funcionó como un encanto y ahora estoy arreglado! +1
iOnline247
9
Cuidado, esta línea de comandos también incluirá archivos no deseados: * .user, BIN \, obj, etc ...
Steve B
1
Saludos, estaba buscando una forma de línea de comandos para poder automatizar la actualización del TFS de la empresa desde mi repositorio local de Git.
Mark K Cowan
2
@SteveB hay un /exclude:fld_name/*,filenameinterruptor que se puede usar para excluir archivos no deseados ... eso me detuvo mucho
Kresimir Pendic
1
Corro así tfpt online /deletes /noprompt /recursive directory-namey tengo miles de archivos para "cambiar", así que tengo que deshacerlos. Pero nunca los toqué, solo eliminé la carpeta.
Dzmitry Lahoda
16
*1- make changes outside of Visual Studio
2- go to Visual Studio and open Source Control Explorer
3- right click on the folder > "Check Out for Edit" > "Check Out"
4- right click on the same folder > "Undo Pending Changes..." > "Undo changes" > "No to All"*

Probé esta solución alternativa en una rama y me ayudó mucho. Pero solo hay archivos nuevos y carpetas nuevas que deben hacerse manualmente.

Recomiendo crear una sucursal antes de la operación. Te aísla el tiempo de la operación.

Nota: Esta técnica también realiza una limpieza idéntica de los archivos que TFS siempre marca como modificada.

hugbe8
fuente
3
Esto debería ser realmente un comentario sobre la publicación de alga , no una nueva respuesta. En cualquier caso, todavía recomendaría no hacer esto por la misma razón que recomendé cuando alga lo sugirió anteriormente.
Edward Thomson
¡Absolutamente brillante! Exactamente lo que estaba buscando (después de que nuestra empresa trasladó nuestro servidor TFS y TFS / VS2010 quedó desconcertado). Ahora, acabo de sacar mis archivos editados. ¡Gracias!
Mike Gledhill
Esto funciona, pero la EM debería ofrecer mejores formas de hacerlo. La línea de comandos y los hacks no deberían ser necesarios en un buen producto (especialmente si está integrado en VS). SVN y Mercurial hacen esto por diversión ...
user2173353
En lugar del punto 4, puede usar tfpt uu stackoverflow.com/a/544285/10245
Tim Abell
Esto simplemente deshace lo que hiciste. No hace que Visual Studio sea consciente de lo que hizo.
Kyle Delaney
7

Prueba esto. Es una especie de solución, pero funciona:

  1. realizar cambios fuera de Visual Studio
  2. vaya a Visual Studio y abra el Explorador de control de código fuente
  3. haga clic derecho en la carpeta> "Check Out for Edit" > "Check Out"
  4. haga clic con el botón derecho en la misma carpeta> "Deshacer cambios pendientes ..." > "Deshacer cambios" > " No a todos "

Eso es. Los cambios son visibles ahora.

Alejandro G
fuente
3
Realmente lo recomendaría en contra de esto: mi mayor preocupación sería que me toquetearía este y accidentalmente desharía todos mis cambios legítimos. Además, está revisando todos los archivos que, dependiendo de la configuración de su cliente y servidor, probablemente bloqueen algunos o posiblemente todos los archivos y podrían obtener la última revisión, lo que ciertamente podría ser molesto.
Edward Thomson
1
Esto simplemente deshace lo que hiciste. No hace que Visual Studio sea consciente de lo que hizo.
Kyle Delaney
Y si creó o agregó elementos nuevos, en esa sesión: ¡Se fue bebé, se fue!
Christian
4

También hay otra solución para que TFS averigüe los archivos que han cambiado fuera de Visual Studio:

  1. Abra la solución sin conexión
  2. En el Explorador de soluciones, seleccione el archivo de la solución y luego presione el botón Conectarse ( Icono del botón GoOnline)

TFS escaneará automáticamente la solución en busca de cambios después de esto.

El primer paso se puede lograr de diferentes maneras. Aquí están algunas:

  • Utilice la extensión GoOffline : muy simple y eficaz.
  • Si se le solicitan las credenciales de TFS al abrir la solución (sin autenticación de dominio automática), no ingrese las credenciales. La solución se abrirá sin conexión e iniciará sesión después de presionar el botón Conectarse
  • (solución extrema) Desconecte su cable de red; Abra la solución; Conecte el cable de red.
Cristian Lupascu
fuente
3

Visual Sourcesafe también funciona así y la forma en que consigo que VSS o TFS noten el cambio es verificando el archivo una vez dentro de Visual Studio.

CheckRaise
fuente
1

Abra Source Control y vaya a su carpeta TFS. Haga clic derecho en la carpeta y elija 'Comparar'.

Observe que sus archivos editados aparecen marcados en rojo.

Encuentro que esto es mejor que el tfpt onlineque también te da archivos que no son de solo lectura y no editados.

usuario2572682
fuente
1

Tuve este problema en el pasado, cuando no tenía Internet y trabajaba sin conexión, y la mayoría de mis cambios no aparecían en Team Explorer.

Después de estos pasos: En primer lugar, en el explorador de soluciones, seleccione la carpeta que desea re-conciliate (para mí, que era toda mi carpeta de soluciones), y seleccione Comparar ... ingrese la descripción de la imagen aquí Haga clic en Modificar filtro , y en el filtro de texto: cuadro, puede escribir:

*.cs;!obj\;!bin\;!packages\;

En este ejemplo, incluirá en la búsqueda solo archivos C # y excluirá en las carpetas: bin, obj y paquetes.

Observe que la columna Cambio pendiente tiene la información de si el archivo está marcado como editar, agregar, etc ... o nada ...

  • Para marcar como edición (cuando el elemento local tiene un elemento de servidor coincidente), seleccione el archivo y elija Desproteger para editar ...
  • Para marcar como agregar (cuando el elemento local no tiene ningún elemento de servidor), seleccione el archivo y elija Agregar archivos

Finalmente, no estoy seguro de por qué los proyectos no se enumeran aquí (después de eliminar el filtro * .cs, todavía no aparece), así que reconstruya la solución para asegurarse de que los proyectos también se actualicen

+ En la solución, haga clic en el botón de conexión (si se muestra arriba) que dijo recurren al Internet .

Jaider
fuente
0

Descubrí que en Visual Studio 2015, con el proyecto abierto, Visual Studio descubrió por sí mismo que los archivos se habían modificado externamente y los revisó automáticamente sin que yo tuviera que hacer nada. Al registrar el proyecto de la forma habitual se guardan las modificaciones externas.

Graham Laight
fuente
0

En mi caso, lo siguiente funcionó (al menos la vez que lo probé):

  1. Vaya al panel de cambios pendientes
  2. Seleccione Ver opciones en Cambios incluidos o excluidos.
  3. Cambiar entre Mostrar todo y Mostrar cambios de solución
  4. Regrese si lo desea

Actualizar cambios de TFS

El cambio de la opción de visualización parece forzar una actualización de los archivos modificados.

rechoncho
fuente