Respostas:
As ferramentas avançadas do Visual Studio devem permitir que você faça isso.
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 exemplo, para mesclar um conjunto de prateleira chamado "Nome do conjunto de prateleira" criado na Filial1 para Filial2, use isto:
>tfpt unshelve "Shelve Set Name";domain\userName /migrate /source:"$/Project/Branch1/" /target:"$/Project/Branch2/"
Solução alternativa para tfpt que evita ter que mesclar cada arquivo manualmente
O problema com a ferramenta elétrica tfs é que você está fazendo uma 'mesclagem sem base', então tem que confirmar todos os arquivos . Eu tinha um conjunto de prateleiras com mais de 800 arquivos e nunca confiei no botão 'mesclagem automática' e não queria examinar cada arquivo por vez - então tive que encontrar outra maneira!
C:\temp\shelveset-name
(Observação: não há barra de progresso ao exportar - então, se você tiver um conjunto de prateleiras grande que leva muito tempo para exportar, você apenas terá que verificar no Windows Explorer (Arquivo> Propriedades> Tamanho) se os arquivos ainda estão sendo baixados se você acho que está congelado).
Agora você só precisa copiá-los para a nova ramificação com o Windows Explorer.
Isso funcionou para mim:
c:\temp\shelveset-name
terá que ser renomeada para corresponder ao novo branch.Dica: certifique-se de copiar para o lugar certo !!!Importante: descobri que se você não colocar o TFS off-line primeiro, acabará com novos arquivos (do seu changeset unshelves) aparecendo sem uma pequena marca de seleção vermelha e você terá que excluí-los e incluí-los novamente para levá-los a adicionar. Se alguém tiver uma solução alternativa para este problema, eu adoraria saber - refrescar não parece funcionar.
As informações da prateleira incluem o caminho específico para o qual ela segue. Infelizmente, não conheço nenhuma maneira automática de desencavar para qualquer local diferente daquele onde foi colocado. As vezes que eu quis fazer isso, tive que verificar os arquivos equivalentes no novo branch, descompactar do branch antigo e, em seguida, copiar manualmente os arquivos.
EDIT: Bem, acho que estava fazendo da maneira mais difícil. Terei que experimentar a solução de Curt. :)
Gastei uma boa quantidade de tempo para fazer isso e tive poucos problemas para superar. É possível, mas aqui há alguns problemas e poucas regras a seguir para evitar esses problemas
Erro:
incapaz de determinar o espaço de trabalho
Este problema específico foi resolvido executando o comando da pasta raiz da filial de origem . Isso é contrário a algumas respostas no SO, onde dizem para usar o branch "destino" - não, use "source":
cd [your !!source!! branch root]
tfpt unshelve /migrate /source:"$/MyCollection/Development/Maint1.1" /target:"$/MyCollection/Development/Maint1.2" "myShelveset;UserName"
O segundo problema apareceu depois disso. Parece que não foi possível conectar ao servidor TFS. O que percebi é que tenho vários VS instalados e conectados a diferentes servidores TFS. Eu estava usando o VS12 e tinha espaço de trabalho e conexão com o servidor. Mas não percebi que a mesma conexão precisa ser replicada no VS13 para que o TFPT2013 funcione. Ele se conecta ao mesmo servidor e espaço de trabalho.
Também tentei fazer usando o TFPT2015, mas instalei e não instalei o TFPT.exe, portanto foi inútil. Tentei do TFPT2013 ao TFS2015 e funcionou para este comando específico. Eu me pergunto, por que não, se o VS12 / 13 funciona bem contra o TFS2015?
Para resumir
As etapas a seguir podem ser usadas para shelvesets de tamanho pequeno (~ 20 arquivos ou menos).