Pergunta

Vamos supor que algum desenvolvedor em minha equipe arquivado suas mudanças que ele fez no ramo A. E eu estou trabalhando no ramo B. Can I unshelve suas alterações no ramo B? (Por GUI ou comando prompt)

Foi útil?

Solução

Visual Studio Tools Poder deve deixá-lo fazer 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 juntar um conjunto prateleira chamada "Shelve Set Name" criado em Branch1 para Branch2 usar este:

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

Outras dicas

Solução Alternativa para tfpt que evita ter que mesclar cada arquivo manualmente

O problema com a ferramenta tfs poder é que você está fazendo um 'merge infundadas' assim que tem de confirmar cada arquivo . Eu tinha um shelveset de mais de 800 arquivos e eu nunca confiar no botão 'auto merge' e não quero passar por cada arquivo por sua vez - então eu tive que encontrar outra maneira

  • Baixe e instale o TFS shelveset Sidekick .
  • A ferramenta aparece em 'Ferramentas' no VS2010
  • Executar a ferramenta 'shelveset Sidekick', clique em Pesquisar para mostrar shelvesets
  • Botão direito do mouse em seu shelveset e selecione 'Export shelveset'
  • Salvar para um local vazio, como C:\temp\shelveset-name
  • Agora temos uma estrutura de diretório completo contendo apenas os novos arquivos

(Nota: Não há nenhuma barra de progresso durante a exportação - por isso, se você tem um grande shelveset que leva um longo tempo para exportar você apenas tem que verificar no Windows Explorer (Arquivo> Propriedades> Size) que os arquivos ainda estão chegando para baixo, se você acha que é congelado).

Agora você só tem que copiá-los para o novo ramo com Windows Explorer.

Isso funcionou para mim:

  • Verificar se toda a primeira solução (no novo ramo)
  • Feche essa solução
  • Tome TFS offline a partir de dentro VS ( ferramenta para fazer este ) - veja abaixo por que isso é importante ...
  • copiar arquivos no Windows Explorer. A estrutura de diretório em c:\temp\shelveset-name terá que ser renomeado para corresponder ao novo ramo. Dica: Certifique-se de copiar para o lugar certo !!!
  • Traga VS on-line
  • Deve encontrar todas as alterações e adicionar os novos arquivos
  • Se ele lhe pede para ligar o sourcecontrol certifique-se de verificar o caminho está correto para o novo ramo.
  • Test - e, em seguida, check-in os novos arquivos

Importante: Descobri que se você não tire primeiro TFS desligada, então você vai acabar com todos os novos arquivos (do seu unshelves changeset) mostrando sem uma marca de verificação pouco vermelho e você vai ter que excluir e incluí-los novamente para levá-los a adicionar. Se alguém tiver uma solução alternativa para este problema que eu gostaria de saber -. Refrescante não parece trabalho

As informações prateleira inclui o caminho específico que vai para. Infelizmente eu não sei de nenhuma maneira automática para unshelve para qualquer local diferente daquele que foi arquivado para. As vezes eu queria fazer isso eu tinha de verificar os arquivos equivalentes no novo ramo, unshelve do antigo ramo, em seguida, copiar manualmente os arquivos mais.

EDIT: Bem, eu acho que eu estava fazendo isso da maneira mais difícil. Vou ter de experimentar solução de Curt. :)

Eu passei boa quantidade de tempo para obter este feito e eu tive alguns problemas a serem superados. É possível, mas aqui alguns problemas e algumas regras a seguir para avois estas questões

Erro:

incapaz de determinar o espaço de trabalho

Esta questão específica foi resolvido executando o comando da pasta raiz ramo origem . Este é ao contrário de algumas respostas sobre SO onde eles dizem usar o "alvo" ramo - não, o uso de "origem":

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

Segundo problema apareceu após isso. Parece que ele não pôde se conectar ao servidor TFS. O que eu percebi, eu tenho múltiplos VS instalado e conectado a diferentes servidores TFS. Eu estava usando VS12 e eu tinha conexão espaço de trabalho e servidor. Mas eu não sabia que mesmas necessidades de conexão para ser replicado em VS13 para TFPT2013 ao trabalho. Ele se conecta ao mesmo servidor e espaço de trabalho.

Eu também tentei fazê-lo usando TFPT2015 mas eu instalei ele e não instalar TFPT.exe, portanto, era inútil. Então, eu tentei de TFPT2013 para TFS2015 e funcionou para este comando particular. Eu me pergunto, por que não, se VS12 / 13 funciona bem contra TFS2015?

Para resumir

  • Use CMD ou DevCMD - não importa
  • comando executado a partir de source root ramo pasta
  • verificar conexão Team Explorer Server para específica VS
  • TF Power Tools 2013 trabalho contra TFS v15, pelo menos, migrar opção funciona
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top