Pergunta

Mudei do TFS para o SVN (TortoiseSVN) com minha empresa atual.Eu realmente sinto falta do recurso "Shelve" do TFS.Li vários artigos sobre como "arquivar" com SVN, mas não li nada que proporcione uma experiência muito simples de "arquivar" o trabalho.

Idealmente, gostaria que itens extras fossem adicionados ao menu de contexto do TortoiseSVN - "Arquivar" e "Desarquivar"."Shelve" removeria o conjunto de prateleiras atual e carregaria o diretório de trabalho em um caminho adequado definido pelas opções do usuário."Unshelve" fundiria o conjunto com a cópia de trabalho.

Será que algo assim existe?Alguém pode sugerir alguma maneira de "hackear" esse recurso na GUI?

Observação:O link a seguir realmente não proporciona a experiência do usuário que eu procurava:

Arquivando o Subversion

Uma das melhores coisas sobre o TFS Shelve é como ele é fácil de usar...

Foi útil?

Solução

O shelving no SVN está começando a ser implementado na versão 1.10, consulte Notas de versão

Outras dicas

Não acredito que o SVN tenha esse recurso integrado ao produto de servidor.Também não acredito em nada parecido com isso emulado em nenhum cliente que usei, incluindo o TortoiseSVN.

Para contornar esse problema, recorri ao uso de um DVCS como Git ou Mercurial, para permitir ramificar/mesclar/arquivar localmente antes de enviar o conteúdo de volta ao SVN.É sem dúvida um pouco complicado, mas funciona muito bem.

Se você entende como funcionam as ramificações do SVN, emular o Shelve no SVN é uma tarefa óbvia:

  1. Crie uma ramificação no repositório (no servidor)
  2. Mude sua cópia local para ele
  3. Confirme suas alterações no novo branch
  4. Mude sua cópia local de volta para o tronco

Quando você estiver pronto para voltar às alterações arquivadas ("unshelve"), simplesmente mescle a ramificação da prateleira de volta à sua cópia local.

Se você não conhece o SVN de linha de comando nem o Tortoise SVN o suficiente para fazer o que foi dito acima, aqui está uma instrução passo a passo superdetalhada sobre como fazer isso no Tortoise SVN:

  1. Faça "Atualização SVN" para atualizar sua cópia de trabalho para a versão mais recente do tronco.Desta forma, as únicas diferenças entre a sua cópia local e o tronco são as suas alterações.
  2. No menu de contexto selecione "Filial/Tag"
  3. A opção "Versão HEAD no repositório" é selecionada por padrão.Mantenha aquilo.
  4. Altere o "To Url" para especificar o nome da filial, por exemplo. http://server/repository/project1/branches/shelf1
  5. Marque a caixa "Mudar cópia de trabalho para nova filial/tag"
  6. Clique em Ok para criar o branch e mudar para ele
  7. Faça "SVN Commit..." e envie suas alterações para o branch recém-criado
  8. No menu de contexto selecione "Alternar..."
  9. Altere o "To URL" para o URL do tronco, por exemplo. http://server/repository/project1/trunk
  10. Clique em Ok para voltar ao tronco

Consulte este link para obter ainda mais detalhes e o equivalente em linha de comando do acima:
Prateleiras no Subversion

Outra opção é usar o recurso 'Criar patch' no TortoiseSvn para criar um arquivo de patch e reverter as alterações.O arquivo de patch pode ser reaplicado posteriormente para voltar onde você estava.

Você ainda pode acabar com algumas mesclagens persistentes se precisar atualizar a revisão da cópia de trabalho.

SVN atualizou as estanteshttps://subversion.apache.org/docs/release-notes/1.11.html#shelving

Os tipos de mudança que você pode abrigar são alterações comprometidas em arquivos e propriedades, exceto os seguintes tipos que ainda não são suportados:

  • copia e move
  • criando e excluindo diretórios

Você pode usar um DVCS, mas de certa forma isso é um erro.'Shelving' em um DVCS armazena suas alterações apenas localmente.É útil apenas se você quiser verificar seu trabalho para reverter se você interrompê-lo com mais trabalho, mas de preferência você deseja salvar seu trabalho no servidor.

Uma maneira de fazer isso no SVN sem um comando shelve explícito é mudar sua cópia de trabalho para um local svn diferente e fazer commit lá em vez de no seu repositório principal.Isso é efetivamente como criar uma ramificação temporária e trabalhar nela durante todo o seu trabalho.Eu não acho que você precisará mesclar, pois o SVN fará isso quando você mudar, pois suas modificações locais serão mantidas.

Infelizmente, você não pode mudar para um local inexistente; portanto, na primeira vez que fizer isso, você terá que criar a 'ramificação' para a qual arquivar.Acho que tudo poderia ser automatizado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top