Pregunta

Supongamos que algún desarrollador de mi equipo archivó los cambios que hizo en la rama A.Y estoy trabajando en la rama B.¿Puedo desarchivar sus cambios en la rama B?(Por GUI o símbolo del sistema)

¿Fue útil?

Solución

El Herramientas eléctricas de Visual Studio debería dejarte hacer esto.

C:\src\2\Merlin\Main>tfpt unshelve /?
tfpt unshelve - Unshelve into workspace with pending changes

Allows a shelveset to be unshelved into a workspace with pending changes.
Merges content between local and shelved changes. Allows migration of shelved
changes from one branch into another by rewriting server paths.

Usage: tfpt unshelve [shelvesetname[;username]] [/nobackup]
                     [/migrate /source:serverpath /target:serverpath]

 shelvesetname          The name of the shelveset to unshelve
 /nobackup              Skip the creation of a backup shelveset
 /migrate               Rewrite the server paths of the shelved items
                        (for example to unshelve into another branch)
 /source:serverpath     Source location for path rewrite (supply with /migrate)
 /target:serverpath     Target location for path rewrite (supply with /migrate)
 /nobackup              Skip the creation of a backup shelveset

Por ejemplo, para fusionar un conjunto de estanterías llamado "Nombre del conjunto de estanterías" creado en la Rama1 con la Rama2, utilice esto:

>tfpt unshelve "Shelve Set Name";domain\userName /migrate /source:"$/Project/Branch1/" /target:"$/Project/Branch2/"

Otros consejos

Solución alternativa a tfpt que evita tener que fusionar cada archivo manualmente

El problema con la herramienta eléctrica tfs es que estás haciendo una 'fusión infundada', así que debes confirmar cada archivo.Tenía un conjunto de más de 800 archivos y nunca confié en el botón de "combinación automática" y no quería revisar cada archivo por turno, ¡así que tuve que encontrar otra manera!

  • Descargue e instale el Compañero de estantes TFS.
  • La herramienta aparece en 'Herramientas' en VS2010
  • Ejecute la herramienta 'Shelveset Sidekick', haga clic en Buscar para mostrar los conjuntos de estanterías
  • Haga clic derecho en su conjunto de estanterías y seleccione 'Exportar conjunto de estanterías'
  • Guardar en una ubicación vacía como C:\temp\shelveset-name
  • Ahora tenga una estructura de directorios completa que contenga SÓLO los archivos nuevos

(Nota:No hay una barra de progreso al exportar, por lo que si tiene un conjunto de archivos grande que tarda mucho en exportarse, solo tendrá que verificar en el Explorador de Windows (Archivo>Propiedades>Tamaño) que los archivos aún se están descargando si cree que están congelados. ).

Ahora sólo tienes que copiarlos a la nueva rama con el Explorador de Windows.

Esto funcionó para mí:

  • Comprobando primero la solución completa (en la nueva rama)
  • Cierra esa solución
  • Desconecte TFS desde VS (Herramienta para hacer esto) - vea a continuación por qué esto es importante...
  • Copie los archivos en el Explorador de Windows.La estructura del directorio en c:\temp\shelveset-name Tendrá que cambiarse el nombre para que corresponda a la nueva sucursal. Consejo:¡¡¡Asegúrate de copiar en el lugar correcto!!!
  • Ponga VS en línea
  • Debería encontrar todos los cambios y agregar los nuevos archivos.
  • Si le pide que vincule el control de fuente, asegúrese de verificar que la ruta sea correcta para la nueva rama.
  • Pruebe y luego registre los archivos nuevos

Importante:Descubrí que si primero no desconecta TFS, terminará con los archivos nuevos (de su conjunto de cambios sin estantes) sin una pequeña marca de verificación roja y tendrá que excluirlos e incluirlos nuevamente para obtenerlos. ellos para agregar.Si alguien tiene una solución alternativa a este problema, me encantaría saberla: la actualización no parece funcionar.

La información del estante incluye la ruta específica a la que se dirige.Lamentablemente, no conozco ninguna forma automática de desarchivarlo en otra ubicación que no sea aquella en la que estaba archivado.Las veces que quise hacer esto tuve que revisar los archivos equivalentes en la nueva rama, desarchivarlos de la rama anterior y luego copiar los archivos manualmente.

EDITAR:Bueno, supongo que lo estaba haciendo de la manera más difícil.Tendré que probar la solución de Curt.:)

Dediqué una buena cantidad de tiempo a hacer esto y tuve pocos problemas que superar.Es posible, pero aquí hay pocos problemas y pocas reglas a seguir para evitarlos.

Error:

incapaz de determinar el espacio de trabajo

Este problema en particular se resolvió ejecutando el comando desde fuente carpeta raíz de la rama.Esto es contrario a algunas respuestas en SO donde dicen que se use la rama "destino" - no, use "fuente":

cd [your !!source!! branch root]
tfpt unshelve /migrate /source:"$/MyCollection/Development/Maint1.1" /target:"$/MyCollection/Development/Maint1.2" "myShelveset;UserName"

Después de este apareció el segundo número.Parece que no se pudo conectar al servidor TFS.Lo que me di cuenta es que tengo varios VS instalados y conectados a diferentes servidores TFS.Estaba usando VS12 y tenía conexión de espacio de trabajo y servidor.Pero no me di cuenta de que es necesario replicar la misma conexión en VS13 para que TFPT2013 funcione.Se conecta al mismo servidor y espacio de trabajo.

También intenté hacerlo usando TFPT2015 pero lo instalé y no instaló TFPT.exe, por lo que fue inútil.Probé desde TFPT2013 a TFS2015 y funcionó para este comando en particular.Me pregunto, ¿por qué no si VS12/13 funciona bien con TFS2015?

Para resumir

  • Utilice CMD o DevCMD, no importa
  • ejecutar comando desde fuente carpeta raíz de rama
  • verificar la conexión del servidor Team Explorer para VS específicos
  • TF Power Tools 2013 funciona con TFS v15, al menos emigrar la opción funciona
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top