Respuestas:
Las Herramientas de Visual Studio eléctricas deben dejar de 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 estantes llamado "Nombre de conjunto de estantes" creado en Branch1 con Branch2, use esto:
>tfpt unshelve "Shelve Set Name";domain\userName /migrate /source:"$/Project/Branch1/" /target:"$/Project/Branch2/"
Solución alternativa a tfpt que evita tener que fusionar cada archivo manualmente
El problema con la herramienta de poder tfs es que está haciendo una 'combinación sin fundamento', así que debe confirmar cada archivo . Tenía una estantería de más de 800 archivos y nunca confío 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!
C:\temp\shelveset-name
(Nota: no hay una barra de progreso al exportar, por lo que si tiene una estantería grande que tarda mucho en exportar, solo tendrá que verificar en el Explorador de Windows (Archivo> Propiedades> Tamaño) que los archivos aún se descargan si creo que está congelado).
Ahora solo tiene que copiarlos a la nueva rama con el Explorador de Windows.
Esto funcionó para mí:
c:\temp\shelveset-name
deberá cambiarse de nombre para que corresponda con la nueva rama. Consejo: ¡asegúrese de copiar en el lugar correcto!Importante: Descubrí que si no desconecta TFS primero, terminará con los archivos nuevos (de su conjunto de cambios de las estanterías) que se mostrarán sin una pequeña marca de verificación roja y tendrá que excluirlos e incluirlos nuevamente para que agreguen. Si alguien tiene una solución alternativa a este problema, me encantaría saberlo: la actualización no parece funcionar.
La información del estante incluye la ruta específica a la que va. Desafortunadamente, no conozco ninguna forma automática de colocar la estantería en una ubicación que no sea aquella en la que se colocó. Las veces que quise hacer esto, tuve que verificar los archivos equivalentes en la nueva rama, quitar la estantería de la rama anterior y luego copiar manualmente los archivos.
EDITAR: Bueno, supongo que lo estaba haciendo de la manera difícil. Tendré que probar la solución de Curt. :)
Pasé una buena cantidad de tiempo para hacer esto y tuve pocos problemas que superar. Es posible, pero aquí hay pocos problemas y pocas reglas a seguir para evitar estos problemas.
Error:
incapaz de determinar el espacio de trabajo
Este problema se resolvió en particular mediante la ejecución del comando desde la fuente carpeta raíz rama. Esto es contrario a algunas respuestas en SO donde dicen que use la rama "target" - no, use "source":
cd [your !!source!! branch root]
tfpt unshelve /migrate /source:"$/MyCollection/Development/Maint1.1" /target:"$/MyCollection/Development/Maint1.2" "myShelveset;UserName"
El segundo número apareció después de este. Parece que no se pudo conectar al servidor TFS. De lo que me di cuenta, tengo varios VS instalados y conectados a diferentes servidores TFS. Estaba usando VS12 y tenía espacio de trabajo y conexión al servidor. Pero no me di cuenta de que la misma conexión debe replicarse 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. Así que probé de TFPT2013 a TFS2015 y funcionó para este comando en particular. Me pregunto, ¿por qué no, si VS12 / 13 funciona bien contra TFS2015?
Para resumir
Los siguientes pasos se pueden utilizar para estantes de tamaño pequeño (~ 20 archivos o menos).