Pergunta

Sou muito novo na subversão, mas usei outros sistemas de controle de revisão, como o ClearCase, há anos.

Meu chefe me pediu para consertar este projeto para que ele pudesse ser construído com o Maven em vez de Ant. Uma das coisas importantes que eu tinha que fazer era me mover src/com para src/main/java/com, e mover test/com para src/test/java/com, que eu fiz usando o svn mv comando. Eu tolamente assumi que, como usei comandos de subversão para mover os diretórios, essa subversão saberia que as coisas haviam sido movidas. E quando eu fundi meu ramo no porta -malas, ele parecia funcionar. Mas agora alguém acabou de terminar o trabalho em um ramo que ele se ramificou antes do meu trabalho. Então, vamos fundir as coisas dele no porta -malas, e basicamente a subversão parece pensar “Ok, ele fez mudanças para src/com/foo/bar/baz.java, mas esse diretório não existe mais, então é irrelevante, então descarte -o ” em vez do que eu esperava, o que era “Ok, ele fez mudanças para src/com/foo/bar/baz.java, mas src/com foi movido, então eu preciso mesclar isso em src/main/java/com/foo/bar/baz.java.

Existe uma maneira de fazer a subversão o gerenciamento de revisão, ou vou mesclar manualmente as mudanças desse cara nos próximos dois dias?

Foi útil?

Solução

Para responder diretamente à sua pergunta:

Existe uma maneira de fazer a subversão o gerenciamento de revisão, ou vou mesclar manualmente as mudanças desse cara nos próximos dois dias?

Você deve ser capaz de tornar isso um pouco mais fácil para si mesmo.

Uma coisa que você pode fazer para aliviar parte da dor (assumindo um layout da seguinte maneira)

/branch/foo/src/com
/branch/foo/test/com
/trunk/src/main/java/com
/trunk/src/test/java/com

Antes de mudar o SRC/COM para src/main/java/com e test/com para src/test/java/com que você poderia ter feito:

cd $TRUNK
svn merge -r N:M http://server/branch/foo .

O que você poderia fazer agora é:

cd $TRUNK
svn merge -r N:M http://server/branch/foo/src/com src/main/java/com
svn merge -r N:M http://server/branch/foo/test/com src/test/java/com

Espero que isso ajude a economizar algum tempo.

Outras dicas

Isso parece um problema único. Eu sugiro que você possa usar svn diff > /to/some/file.patch (ou diff normal) para salvar suas alterações em um arquivo e depois aplique -o no seu porta -malas movido com patch -p0 < /to/some/file.path.

Alguém tentou este software? xmerge

Isso é plug -in para SmartSVN, mas parece fazer o truque. Se alguém estiver usando, ficarei agradecido se me enviar uma revisão dele.

Eu só tive o mesmo problema e resolvi com isso git. Eu não queria mesclar módulos servidores com svn merge -r N:M http://server/branch/foo/test/com src/test/java/com por src/main, src/test e resources.

Então eu usei git svn clone file:///some/repo -T trunk -b branches -t tags. Assim eu pude manter Git Master em sincronia com SVN tronco e mesclar com o meu ramo git. Quando terminei, eu mesclei o ramo git para Git Master E de lá para SVN tronco.

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