¿Puedo moverme a una sucursal diferente en tfs 2008?

Respuestas:

129

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/"
Curt Hagenlocher
fuente
2
Ooohhh ... Curt, creo que me alegraste el día. Voy a tener que intentarlo más tarde.
Herms
¿De dónde sacas las herramientas eléctricas?
Guy
3
Sí, las herramientas eléctricas DEBERÍAN permitirte hacer esto, pero desafortunadamente la combinación sale terriblemente mal cada vez, por lo que es casi inútil.
Tim Booker
La fusión no es tan mala. Descubrí que Auto Merge funciona en el 90% de los casos.
Justin Rudd
2
Sólo lo probé. Moví muchos archivos dentro de la estantería y, desafortunadamente, esto no parece funcionar bien. Debe "migrar" manualmente todos estos archivos (tampoco hay selección múltiple). Y luego se agregan como archivos nuevos al espacio de trabajo. No puedo usarlo porque ya no puedo fusionarlo.
Stefan Steinegger
34

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!

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

(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í:

  • Verificando 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-namedeberá cambiarse de nombre para que corresponda con la nueva rama. Consejo: ¡asegúrese 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 origen, asegúrese de verificar que la ruta sea correcta para la nueva rama.
  • Pruebe y luego verifique los nuevos archivos

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.

Simon_Weaver
fuente
Este método es más fácil para estanterías más grandes y es el que seguí. ¡Gracias!
Ani
Este método es realmente mejor para estanterías más grandes
Aamir
Bueno, puede escapar sin tener que desconectar TFS. Pero no estoy seguro de que valga la pena. Lo que hice fue ejecutar la acción Comparar - en Source Control Explorer desde el menú contextual abierto en la carpeta relevante. Se puede filtrar la salida para mostrar solo los elementos que son diferentes. Luego permite hacer una selección múltiple en ellos y Verificarlos todos a la vez. Pero supongo que desconectar TFS es más rápido y sencillo que eso.
marcar
Desafortunadamente, esto no funciona para mí cuando tengo "agregar" cambios en el conjunto de estantes. Aparece el error "No se pudo recuperar el archivo archivado. Se requiere un cambio pendiente archivado en un archivo".
John Saunders
@JohnSaunders usted se refiere a un conjunto de cambios aplazados con cualquier suma o exclusivamente añade? No he necesitado hacer esto en años :)
Simon_Weaver
1

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. :)

Herms
fuente
0

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

  • Use CMD o DevCMD, no importa
  • comando de marcha desde la fuente carpeta raíz rama
  • verificar la conexión de Team Explorer Server para un VS específico
  • TF Power Tools 2013 funciona contra TFS v15, al menos la opción de migración funciona
TS
fuente
0

Los siguientes pasos se pueden utilizar para estantes de tamaño pequeño (~ 20 archivos o menos).

  1. En la estantería y las ramas de destino, comience por registrar o deshacer todas las actualizaciones pendientes.
  2. En la rama de estanterías, retire los archivos de la estantería correspondiente.
  3. En la rama de destino, verifique cualquiera de los archivos existentes que se encontraban en la estantería sin estanterías.
  4. Compare los archivos sin estantes en la rama del conjunto de estantes con los de la rama de destino para identificar aquellos archivos que requieren actualizaciones de combinación (si las hubiera).
  5. Si es necesario, realice actualizaciones de combinación manualmente en los archivos correspondientes del paso anterior y guarde estos archivos en el espacio de trabajo de la rama de destino.
  6. Copie los otros archivos de estanterías desde el espacio de trabajo de la rama de estanterías al espacio de trabajo de la rama de destino.
  7. Compare los nuevos archivos actualizados en el espacio de trabajo de la rama de destino con los archivos registrados. Realice las correcciones necesarias.
  8. Verifique los nuevos archivos actualizados en la rama de destino.
  9. Revertir los archivos no almacenados en la rama de estantería.
JohnH
fuente