Subversão: O que significa “Path Alvo não existe” quando a fusão significa?
Pergunta
Usando a subversão 1.5, tenho o ramo B, que foi ramificado da filial A. Depois de trabalhar nos dois ramos, vou mesclar mudanças de A em B (usando svn merge http://path/to/A
no diretório de trabalho de b) e obtenha svn: Target path does not exist
. O que isto significa?
Solução
Isso significa que houve uma alteração em um arquivo na ramificação A que a subversão tentou se fundir na filial B, mas o arquivo não existe na filial B, portanto, não tem lugar para mesclar a alteração. Por exemplo:
- Crie ramo b
- Mudar A/ReadMe
- Exclua b/readme
- Mesclar a -> b
Agora, a alteração no ReadMe não pode ser aplicada na filial B, porque o arquivo foi removido lá.
Editar: isso resultará em um conflito de árvores na subversão 1.6.
Outras dicas
Eu estava recebendo esse erro com o SVN 1.5.4, mesmo quando não houve alterações incompatíveis. Atualizando para 1.5.5 Corrigido para mim.
Eu tive esse problema porque meu porta -malas e o ramo tinham uma história estranha.
Assim:
/---------\
trunk -------+---+ +---\
\-----------BOOM!
Mesclagem de tronco -> ramo não funcionou.
Fusão de fusão -> Trunk funcionou.
/---------\
trunk -------+---+ +---+-----
\---------/
Provavelmente porque o porta -malas tinha informações melhores sobre o último ancestral que eles compartilharam.
No meu caso, eu não estava pronto para me fundir de volta ao Trunk, mas pude criar um novo ramo do porta -malas e mesclar meu antigo ramo lá.
/---------\
trunk -------+---+ +---+-------
\ \---+--
\-------------/