Pergunta

Acabei de fazer uma mesclagem usando algo como:

svn merge -r 67212:67213 https://my.svn.repository/trunk .

Eu só tinha 2 arquivos, um dos quais é simples ChangeLog.Em vez de apenas fundir meu ChangeLog mudanças, na verdade puxou o meu mais alguns anteriores que não estavam no destino ChangeLog.Percebi que houve um conflito quando executei --dry-run, então atualizei ChangeLog, e ainda havia um conflito (e eu vi o conflito quando fiz a mesclagem real).

Posteriormente, diferenciei o arquivo do qual estava mesclando:

svn diff -r 67212:67213 ChangeLog

E vejo apenas as mudanças que fiz, então sei que as mudanças extras não chegaram lá de alguma forma.

Isso me deixa preocupado porque a mesclagem não está apenas pegando o que eu mudei, que é o que eu esperava.Alguém pode explicar o que aconteceu?

ATUALIZAR:Em resposta a NilObject:

Então, eu tenho 2 arquivos alterados, apenas o ChangeLog é relevante, o outro mesclado corretamente.Quando vou para meu checkout normal de tronco, executo o comando diff acima e vejo:

Index: ChangeLog
===================================================================
--- ChangeLog   (revision 67212)
+++ ChangeLog   (revision 67213)
@@ -1,3 +1,7 @@
+2008-08-06  Mike Stone  <myemail>
+
+   * changed_file: Details.
+
 2008-08-06  Someone Else  <their_email>

    * theirChanges: Details.

Após mesclar as alterações anteriores, a diferença do ChangeLog fica assim:

Index: ChangeLog
===================================================================
--- ChangeLog   (revision 67215)
+++ ChangeLog   (working copy)
@@ -1,3 +1,14 @@
+<<<<<<< .working
+=======
+2008-08-06  Mike Stone  <myemail>
+
+   * changed_file: Details.
+
+2008-08-06  Someone Else  <their_email>
+
+   * theirChanges: Details.
+
+>>>>>>> .merge-right.r67213
 2008-08-05  Someone Else2  <their2_email>

    * olderChange: Details.

Observe que a entrada que foi extraída incorretamente não estava no arquivo ao qual estou mesclando, mas ainda assim não foi uma das minhas alterações e não deveria ter sido mesclada de qualquer maneira.Foi fácil de consertar (remover as linhas extras que não faziam parte das minhas alterações), mas ainda me preocupa em mesclar automaticamente SVN.

Foi útil?

Solução

Isso só acontece com conflitos - basicamente o svn tentou mesclar a mudança, mas (grosso modo) viu a mudança como:

Adicionar

2008-08-06  Mike Stone  <myemail>

* changed_file: Details.

antes

2008-08-06  Someone Else  <their_email>

E não foi possível encontrar a linha de Outra Pessoa ao fazer a mesclagem, então coloquei essa parte no contexto ao colocar o conflito.Se fosse uma mesclagem não conflitante, apenas as alterações esperadas teriam sido aplicadas.

Outras dicas

Não há informações suficientes para continuar aqui.

svn merge -r 67212:67213 https://my.svn.repository/trunk .

irá mesclar todos os arquivos alterados na revisão 67212 na pasta /trunk no repositório e mesclá-los em seu diretório de trabalho atual.Se você fizer:

svn log -r 67212

Quais arquivos ele mostra alterados?Merge apenas extrairá alterações do primeiro argumento e as aplicará ao segundo.Ele não faz upload de volta para o servidor no primeiro argumento.

Se isso não responder à sua pergunta, você poderia postar mais detalhes sobre o que exatamente está acontecendo?

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