SVN merge fundiu material extra

votos
10

Eu apenas fiz uma mesclagem usando algo como:

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

Eu só tinha 2 arquivos, um dos quais é um simples ChangeLog. Ao invés de apenas fundir minhas ChangeLogmudanças, ele realmente puxou o meu mais algumas anteriores que não estavam no destino ChangeLog. Notei que havia um conflito quando eu executado --dry-run, então eu atualizadas ChangeLog, e ainda havia um conflito (e eu vi o conflito quando eu fiz a fusão real).

então eu depois diffed sobre o arquivo que estava fundindo a partir de:

svn diff -r 67212:67213 ChangeLog

E eu vejo apenas as mudanças que eu tinha feito, então eu sei que as mudanças extras não chegar lá de alguma forma.

Isto faz-me preocupado que mesclagem não é realmente apenas tomando o que mudou, que é o que eu teria esperado. Alguém pode explicar o que aconteceu?

UPDATE: Em resposta a NilObject:

Então, eu tenho 2 arquivos alterado, somente ChangeLog é relevante, o outro bem mesclado. Quando eu vou para meu check-out regulares tronco, eu faço o comando diff acima e veja:

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.

Depois da minha merge das alterações anteriores, o diff de ChangeLog parece com isso:

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.

Note-se que a entrada que foi puxado incorretamente no não estava no arquivo que estou fundindo-a, mas ainda não foi uma das minhas alterações e não deveria ter sido fundida de qualquer maneira. Era fácil de corrigir (remover as linhas extras que não faziam parte das minhas alterações), mas ainda faz me preocupar com a fusão automaticamente SVN.

Publicado 06/08/2008 em 23:30
fonte usuário
Em outras línguas...                            


2 respostas

votos
2

Isso só acontece com os conflitos - basicamente svn tentou fundir a mudança, mas (a 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 poderia encontrar a linha Else Alguém ao fazer a fusão, por isso lancei esse bocado no contexto para quando colocar no conflito. Se fosse um merge não conflitantes apenas as alterações esperadas teria sido aplicada.

Respondeu 17/08/2008 em 18:17
fonte usuário

votos
0

Não há realmente suficiente informação para ir em 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 fundi-los em seu diretório de trabalho atual. Se você fizer:

svn log -r 67212

Quais arquivos que mostram mudou? Mesclar só puxar mudanças a partir do primeiro argumento, e aplicá-las para o segundo. Não fazer 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?

Respondeu 07/08/2008 em 00:12
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more