Mover uma pasta no SVN

5

Isto está no Win2k3sp2, usando o TortoiseSVN 1.6.5 e o SlikSVN 1.6.3.

Eu tenho uma pasta em um repositório, chamo de / a / b, que eu quero tornar-se / a / c / d no mesmo repositório. Eu tentei apenas mover a pasta e renomeá-lo e, em seguida, confirmar e, aparentemente, fica confuso, porque a pasta .svn acha que ainda está sob o nome antigo e se funcionar, é uma coisa de dois commit onde / a / b é deletado e / a / c / d é novo, o que não é bom, porque então eu perco o histórico anexado a cada arquivo.

Comecei a pesquisar e encontrei o "relocate", que vem com um enorme aviso e me convence a não usá-lo. Então há "switch", que, embora eu achasse que "relocate" era uma maneira mais intuitiva de descrever o que eu queria fazer, parecia ser a opção apropriada. Então eu fiz isso, e demorou muito tempo, embora houvesse apenas alguns arquivos dentro de / a / b (como talvez 8 pastas, cada uma contendo um arquivo ou dois), e agora:

  1. / a / b ainda está lá
  2. metade das pastas em / a / b desapareceram
  3. as pastas restantes em / a / b me dão um erro quando tento olhar dentro delas: "/ a / b / e não está acessível. O acesso foi negado."
  4. / a / c / b (não / a / c / d como eu havia dito!) foi criado, mas ficou vazio
  5. Eu tentei uma atualização e agora algumas pastas estão em / a / b, mas nem todas

Minha pergunta, então, é em duas partes:

  1. Como faço para limpar isso?
  2. Qual é a maneira correta de mover uma pasta conforme descrevi?
por Kev 23.10.2009 / 15:02

4 respostas

5

Seu problema é ter usado o comando errado; 'Switch' faz o complemento exato do que você queria - ele muda o local do repositório em que sua cópia de trabalho 'aponta', sem alterar o repositório. (Switch, em seguida, commit teria produzido algum resultado, mas de uma forma muito quebrada, o que você não quis dizer. Você estava certo; o "Relocate", que soa tentador, é um caso especial de "Switch" e deve ser evitado pelo mesmo motivo.)
O comando 'Update' atualizou a cópia de trabalho para corresponder ao que estava no repositório no 'novo' local - nada!

O Subversion não tem um movimento verdadeiro / renomeia ainda. A maneira segura de fazê-lo para o subversion é copiar e excluir. O TortoiseSVN inclui uma opção de 'movimentação' prática que faz uma cópia e eliminação como uma operação.

A maneira mais fácil de fazer o que você queria:
1. Abra o repo-browser no TortoiseSVN.
2. Clique à direita e arraste a pasta do local antigo para o novo.
3. Selecione 'Mover' no menu de contexto.

Isto também funciona dentro da sua cópia de trabalho, e é a forma segura do Tortoise / Subversão de mover ou renomear arquivos e pastas no wc sem perder o histórico.

    
por 23.10.2009 / 15:59
3

para responder ao seu segundo ponto, aqui está como eu movo as pastas com o Tortoise-SVN:

  • clique com o botão direito do mouse no Windows Explorer em uma pasta, depois em "Tortoise SVN" e em "Repo-browser".
  • no repo browser, faça com que você esteja olhando para onde está a pasta-you-want-to-move-se.
  • clique na pasta (ou arquivo!) para movê-la e arrastá-la no painel esquerdo onde você deseja que ela seja
  • clique em OK para fechar o navegador repo
  • clique com o botão direito na sua pasta e em "Atualizar".

Quando você atualiza, o Tortoise SVN irá deletar a pasta onde estava e recriá-lo onde você o moveu.

    
por 23.10.2009 / 15:23
3

Para mover os arquivos corretamente, use o comando de movimentação .

EDIT:
Nota, move, mv, rename, ren são aliases para o mesmo comando. Pode ser encontrado no TortoiseSVN em "TortoiseSVN" - > "Renomear ..." veja aqui

    
por 23.10.2009 / 16:34
0

Eu tive um problema semelhante. Mas no meu caso diretórios / a / b e / a / c foram retirados separadamente.

Esta solução com checkout esparso (parcial) resolveu o problema.

    
por 18.04.2017 / 17:53