2008-09-22 16 views

Respuesta

127

El Visual Studio Power Tools debería permitirte 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 unir de nuevo estantería llamada "Shelve Establecer nombre" creado en Branch1 a Branch2 utilizar este:

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

Ooohhh ... Curt, creo que acaba de hacer mi día. Voy a tener que intentar eso más tarde. – Herms

+0

¿De dónde obtienes las herramientas eléctricas? – Guy

+3

Sí, las herramientas eléctricas DEBERÍAN dejarte hacer esto, pero desafortunadamente la fusión sale terriblemente mal cada vez, así que es casi inútil. –

1

La información del estante incluye la ruta específica a la que va. Desafortunadamente, no conozco ninguna forma automática de desmantelar ninguna ubicación que no sea la que fue archivada. Las veces que he querido hacer esto, tuve que verificar los archivos equivalentes en la nueva sucursal, desmantelar desde la rama anterior y luego copiar manualmente los archivos.

EDIT: Bueno, creo que lo estaba haciendo de la manera difícil. Tendré que probar la solución de Curt. :)

34

solución alternativa a TFPt que evita tener que combinar cada archivo manualmente

El problema con la herramienta de poder tfs es que you're doing a 'baseless merge' so have to confirm every file. Tenía un archivador de más de 800 archivos y nunca confío en el botón 'fusión automática' y no quería revisar cada archivo uno a uno, ¡así que tenía que buscar otra forma!

  • Descargue e instale el TFS Shelveset Sidekick.
  • La herramienta aparece bajo 'Herramientas' en VS2010
  • Ejecutar la herramienta 'aplazados Sidekick', haga clic en Buscar para mostrar shelvesets
  • Haga clic derecho en su aplazados y seleccione 'Exportar cambios aplazados'
  • Guardar en una ubicación vacía como C:\temp\shelveset-name
  • Ahora tienen una estructura de directorios completo que contiene sólo el nuevos archivos

(Nota: no hay barra de progreso cuando se exporta - por lo que si usted tiene un gran conjunto de cambios aplazados que tarda mucho ti Para exportarlo, solo tendrá que comprobar en el Explorador de Windows (Archivo> Propiedades> Tamaño) que los archivos aún están cayendo si cree que están congelados.

Ahora solo tiene que copiarlos a la nueva sucursal con Windows Explorer.

Esto funcionó para mí:

  • Comprobación de toda la solución en primer lugar (en la nueva rama)
  • Cerrar esa solución
  • Tome TFS sin conexión desde dentro VS (Tool to do this) - ver a continuación para por qué esto es importante ...
  • Copie los archivos en Windows Explorer. La estructura de directorios en c:\temp\shelveset-name tendrá que renombrarse para corresponder a la nueva rama. Consejo: ¡¡¡Asegúrate de copiar al lugar correcto !!!
  • Llevar VS línea
  • Se debe encontrar todos los cambios y añadir los nuevos archivos
  • Si se le pide que obligar a la SourceControl asegúrese de verificar la ruta es correcta para la nueva rama.
  • prueba - y luego checkin los nuevos archivos

Importante: Me he dado cuenta que si no se toma la primera línea de TFS entonces usted va a terminar con los nuevos archivos (de su unshelves conjunto de cambios) que muestra sin una pequeña marca de verificación roja y deberá excluirlos e incluirlos nuevamente para que se agreguen. Si alguien tiene una solución alternativa a este problema, me encantaría saber: refrescante no parece funcionar.

+0

Este método es más fácil para conjuntos de estantes más grandes y es el que yo seguí. ¡Gracias! – Ani

+0

Este método es realmente mejor para conjuntos de estantes más grandes – Aamir

+0

Bueno, puede escaparse sin 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 abrir en la carpeta correspondiente. Uno puede filtrar la salida para mostrar solo los elementos que son diferentes. Luego, permite hacer una selección múltiple en ellos y seleccionarlos todos a la vez. Pero creo que quitar TFS fuera de línea es más rápido y simple que eso. – mark

Cuestiones relacionadas