¿Por qué? ¿Por qué los TFS no obtienen el último trabajo de manera consistente?
Habría pensado que esa característica se habría probado a fondo.
Lo que tengo que hacer es obtener una versión específica, luego verificar ambos sobrescribir archivos de escritura + sobrescribir todos los archivos.
¿Está mal mi configuración local o tú también haces esto?
Respuestas:
TFS redefinió lo que hace "Get Latest". En términos de TFS, Obtener más reciente significa obtener la última versión de los archivos, pero ignore los que el servidor cree que ya están en su espacio de trabajo. Lo que para mí y para casi todos los demás en el planeta está mal.
Ver este enlace: http://blogs.microsoft.co.il/blogs/srlteam/archive/2009/04/13/how-get-latest-version-really-works.aspx
La única forma de lograr que haga lo que desea es obtener una versión específica, luego marque las dos casillas "Sobrescribir ...".
fuente
A veces,
Get specific version
incluso al marcar ambas casillas de verificación no obtendrá el último archivo. Probablemente ha realizado un cambio en un archivo y desea deshacer esos cambios volviendo a obtener la última versión. Bueno ... para esoUndo pending changes
es y no para quéGet specific version
.En caso de duda:
Y este es mi favorito que acabo de descubrir:
Esté atento a la
Output
ventana de mensajes como este:Advertencia: no se puede actualizar R: \ TFS-PROJECTS \ www.example.com \ ExampleMVC \ Example MVC \ Example MVC.csproj porque tiene una edición pendiente.
Este mensaje crítico aparece en la ventana de salida. No hay otras notificaciones! ¡Nada en cambios pendientes y ningún otro mensaje de diálogo que le indique que el archivo que acaba de solicitar explícitamente no se recuperó! Y sí, resuelve esto simplemente ejecutando
Undo pending changes
y obteniendo el archivo.fuente
Undo pending changes
) funcionó para mí.TFS, al igual que algunos otros proveedores de control de origen, como Perforce, hace esto, ya que el sistema sabe cuál fue la última versión que obtuvo con éxito, así que obtenga los últimos cambios en "obtener cambios desde x". Si juegas según sus reglas y realmente revisas las cosas antes de editarlas, no confundes las cosas, y "obtener lo último" realmente hace lo que dice.
Como ha visto, puede obligarlo a reevaluar todo, lo que tiene un uso de ancho de banda mucho mayor, pero se comporta más cerca de lo que solía hacer SourceSafe.
fuente
Es difícil responder a una declaración sin ejemplos de cómo no está funcionando, pero es crucial comprender que TFVC (en el modo "Espacio de trabajo del servidor", que era el mecanismo anterior a TFS 2012) no examina el estado de su sistema de archivos local . Los espacios de trabajo del servidor TFVC son un tipo de sistema "checkout-edit-checkin" en el que esto es por diseño, una decisión intencional tomada para reducir masivamente la cantidad de E / S de archivo requerida para determinar el estado de su espacio de trabajo. En cambio, la información del espacio de trabajo se guarda en el servidor.
Esto permite TFVC áreas de trabajo del servidor a escala a muy grandes bases de código de manera muy eficiente. Si está en una base de código de varios gigabytes (como Visual Studio o el árbol fuente de Windows), entonces su cliente no necesita escanear su sistema de archivos local, buscando archivos que pueden haber cambiado, porque el contrato que tiene con TFS es que usted verificará explícitamente un archivo cuando desee editarlo.
Se espera que no marque un archivo como de solo escritura y que lo cambie sin verificarlo explícitamente primero. Si sigue esta ruta, el servidor no sabe que ha realizado cambios en su archivo, y realizar una operación "Obtener más reciente" no actualizará su espacio de trabajo local, porque no le ha dicho al servidor que ha realizado cambios
Si haces subvertir este mecanismo, puede utilizar el
tfpt reconcile
comando para examinar su espacio de trabajo local para los cambios que se han hecho en la localidad.Si se encuentra utilizando "Obtener versión específica" y seleccionando las opciones "forzar" y "sobrescribir", entonces es muy probable que tenga la costumbre de eludir todas las aplicaciones que TFS ha implementado para evitar que se lastime, y probablemente debería considerar los espacios de trabajo locales TFVC.
Los espacios de trabajo locales de TFVC proporcionan un tipo de sistema de control de versiones "edit-merge-commit", lo que significa que no es necesario verificar explícitamente los archivos antes de editarlos y no son de solo lectura en el disco. En cambio, simplemente necesita editar el archivo, y su cliente escaneará el sistema de archivos, notará el cambio y lo presentará como un cambio pendiente.
Los espacios de trabajo locales TFVC se recomiendan para proyectos pequeños que no requieren un control de permisos específico, ya que presentan un flujo de trabajo mucho más agradable. No es necesario que esté en línea, y no tiene que retirar explícitamente los archivos antes de editarlos.
Los espacios de trabajo locales de TFVC son los predeterminados en TFS 2012, y si no están habilitados para usted, debe consultar al administrador del servidor. (Las organizaciones con bases de código muy grandes o requisitos estrictos de auditoría pueden deshabilitar los espacios de trabajo locales de TFVC).
El excelente libro Control de versiones de Eric Sink, por ejemplo, describe las diferencias entre los sistemas checkout-edit-checkin y edit-merge-commit y cuándo uno es más apropiado que el otro.
El libro Professional Team Foundation Server 2013 también proporciona información excelente sobre las diferencias entre los espacios de trabajo del servidor TFVC y los espacios de trabajo locales TFVC. La documentación y los blogs de MSDN también proporcionan información detallada:
fuente
Team Foundation Server (TFS) realiza un seguimiento de su copia local en un directorio oculto llamado $ TF. Cuando emite "obtener la última versión", TFS busca en esta carpeta y ve si tengo la última copia o no. Si lo hace, no descargará la última copia. No importa si tiene el archivo original o no. De hecho, es posible que haya eliminado toda la carpeta (como en mi caso) y TFS no obtendrá la última copia porque no se ve en el archivo real sino en el directorio oculto donde registra los cambios. La falla con este diseño es que todo lo que se haga fuera del sistema no se grabará en TFS. Por ejemplo, puede ingresar al explorador de Windows, eliminar una carpeta o archivo y TFS no lo reconocerá. Será totalmente ciego. ¡Al menos esperaría que Windows no le permitiera eliminar este archivo, pero lo hace!
Una forma de aplicar la última copia es eliminar la carpeta oculta $ TF manualmente. Para hacer eso, vaya al símbolo del sistema y navegue a la carpeta raíz donde se desprotegió su proyecto y emita este comando
Si solo desea verificar la carpeta oculta, puede hacerlo usando
Nota: Si lo hace, el tf pensará que no tiene ninguna copia local a pesar de que la tiene en los archivos y volverá a sincronizar todo.
Precaución: use este método bajo su propio riesgo. Por favor, no lo use en trabajos críticos.
fuente
"Obtener la última versión" de forma predeterminada solo descargará los archivos que han cambiado en el servidor desde la última vez que ejecutó "Obtener la última versión". TFS realiza un seguimiento de los archivos que descarga para que no pierda tiempo descargando la misma versión de los archivos nuevamente. Si está modificando los archivos fuera de Visual Studio, esto puede causar los problemas de consistencia que parece que está viendo.
fuente
Desafortunadamente, tiene que haber uno o más errores en TFS 2008, ya que este problema surge regularmente en las máquinas de desarrollo y construye servidores donde también trabajo.
Puedo hacer Get Latest, puedo ver en la lista de historial del proyecto que ha habido confirmaciones después de haber realizado Get Latest, no he tocado los archivos en el disco de ninguna manera, pero después de que la función "Get Latest" completado, cuando reviso la pestaña TFS, algunos de los archivos todavía dicen que no son la última versión.
Obviamente, TFS puede determinar que tengo archivos antiguos localmente, ya que la lista lo dice. Sin embargo, Get Latest no puede hacer eso, obtén la última versión. Si hago lo que hizo, use la versión Obtener específica y marque las dos casillas de verificación en la parte inferior del cuadro de diálogo, luego se recuperarán los archivos.
Cambiamos nuestros servidores de compilación para usar siempre el tipo de función Obtener versión específica, por lo que esta parte ahora funciona, pero dado que nuestro servidor de compilación (TeamCity) también se basa en verificar si ha habido cambios en los archivos para iniciar una compilación , a veces cae en un modo de "nada cambiado, nada que ver aquí, moverse" y no hace nada hasta que ejecutamos por la fuerza la configuración de compilación.
Tenga en cuenta que he experimentado este problema en una máquina que nunca se toca, a excepción de obtener la última compilación +, ambas manualmente, por lo que no hay nada que altere los archivos. Es solo que TFS se está confundiendo.
Una vez que esto apareció, verifiqué que los archivos en el disco eran de hecho binarios idénticos a la versión recuperada previamente, por lo que no se había hecho ninguna manipulación manual con los archivos.
Además, no veo cómo TFS puede "saber" si los archivos han cambiado en el disco o no sin mirar realmente el contenido. Si una parte de TFS puede ver que los archivos no son la última versión, entonces la última versión debería ser absolutamente capaz de obtener la última versión. Esto en referencia a los comentarios a otras respuestas aquí.
fuente
Puede ser porque está iniciando sesión en TFS como el mismo usuario, y el nombre del espacio de trabajo (basado en el nombre de la máquina por defecto) también es el mismo, por lo que TFS cree que está en la misma máquina y el mismo espacio de trabajo, por lo que ya tiene la última versión de los archivos, por lo que no los obtendrá para usted.
intente cambiar el nombre de su máquina y cree un nuevo espacio de trabajo como una nueva máquina.
fuente
Tuve el mismo problema con Visual Studio 2012. No importa lo que hice, no obtuvo el código del control de fuente TFS.
En mi caso, la causa fue mapear una carpeta + subcarpeta desde el control de origen por separado pero al mismo árbol en mi HD local.
La solución fue eliminar la asignación de subcarpetas mediante la ventana "administrar espacios de trabajo".
fuente
La mayoría de los problemas que he visto con los desarrolladores quejándose de que Get Latest no hace lo que esperan se debe al hecho de que están realizando Get Latest de Solution Explorer en lugar de Source Control Explorer. El Explorador de soluciones solo obtiene los archivos que forman parte de la solución e ignora todo lo que puedan requerir los archivos dentro de la solución y, por lo tanto, parte del control de origen, mientras que el explorador de Control de origen compara su espacio de trabajo local con el repositorio en el servidor para determinar qué archivos Se necesitan.
fuente
CUANDO me encuentro con este problema, ya que no obtiene la última versión y los desajustes de versión, primero hago una "Obtener versión específica", la configuro en changeset y la coloco en 1. Esto eliminará todos los archivos de su espacio de trabajo local (para ese proyecto, carpeta, archivo, etc.) y también tendrá una actualización TFS para que sepa que ahora NO HAY VERSIÓN DESCARGADA. Luego puedes hacer un "Get Latest" y viola, en realidad tendrás el último
fuente
Puede suceder cuando usa TFS desde dos máquinas diferentes con la misma cuenta, si es así, debe comparar para ver los archivos modificados y revisarlos, luego obtenga lo último y deshaga los cambios pendientes para eliminar el pago
fuente
Esto funcionó para mí:
1. Salga de Visual Studio
2. Abra una ventana de comandos y navegue a la carpeta: "% localappdata% \ Local \ Microsoft \ Team Foundation \"
3. Navegue a las subcarpetas para cada versión y elimine la subcarpeta "caché" y su contenido
4. Reinicie Visual Studio y conéctese a TFS.
5. Pruebe la última versión.
fuente
solo quiero agregar TFS MSBuild no admite caracteres especiales en carpetas, es decir, "@"
había experimentado en el pasado donde una de nuestras carpetas de proyectos se llamaba External @ Project1
creamos una definición de compilación TFS para ejecutar un archivo msbuild personalizado, luego la carpeta del espacio de trabajo no obtiene ningún contenido en la carpeta External @ Project1 durante el último espacio de trabajo. Parece que tfs get está fallando pero no muestra ningún error.
después de alguna prueba y error y renombrar la carpeta a _Project1. voila tenemos archivos en la carpeta (_Project1).
fuente
Herramienta: herramientas eléctricas TFS
Fuente: http://dennymichael.net/2013/03/19/tfs-scorch/
Comando: tfpt scorch / recursive / delete C: \ LocationOfWorkspaceOrFolder
Aparecerá un cuadro de diálogo que le pedirá que elimine o descargue una lista de archivos. Seleccione o deseleccione los archivos en consecuencia y presione OK. Apariencia en la cuadrícula (CheckBox, FileName, FileAction, FilePath)
Causa: TFS solo se comparará con los elementos del espacio de trabajo. Si se hicieron alteraciones fuera del espacio de trabajo, TFS no se dará cuenta de ellas.
Esperemos que alguien encuentre esto útil. Encontré esta publicación después de eliminar un puñado de carpetas en diferentes ubicaciones. Al no recordar qué carpetas eliminé, excluí la opción habitual de Obtención / Reemplazo de Force que hubiera utilizado.
fuente
En mi caso, Obtener una versión específica, incluso marcar ambas casillas de verificación y deshacer todos los cambios pendientes no funcionó.
Comprobado los espacios de trabajo. Editar el espacio de trabajo actual. Verifica todos los caminos. La ruta de la solución era incorrecta y apuntaba a una carpeta eliminada.
Se corrigió el camino y la última funcionó bien.
fuente
Vaya con el botón derecho: Avanzado> Obtener versión específica . Seleccione "Versión más reciente" y ahora, importante, marque dos comprobaciones:
Las verificaciones son:
Sobrescribir archivos que se pueden escribir que no están verificados
Sobrescribir todos los archivos incluso si la versión local coincide con la versión especificada
fuente