2008-08-06 13 views
9

Ich habe gerade eine merge wie etwas mit:SVN Merge fusionierte Extramaterial

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

Ich hatte nur zwei Dateien, eine davon ist eine einfache ChangeLog. Anstatt nur meine ChangeLog Änderungen zu verschmelzen, zog es tatsächlich meine plus einige vorherige, die nicht im Ziel waren ChangeLog. Ich bemerkte, dass es einen Konflikt gab, als ich --dry-run ausführte, also aktualisierte ich ChangeLog, und es gab noch einen Konflikt (und ich sah den Konflikt, als ich die tatsächliche Zusammenführung tat).

ich diffed dann später auf die Datei aus ich Fusion:

svn diff -r 67212:67213 ChangeLog 

Und ich sehe nur die Änderungen, die ich gemacht habe, damit ich weiß, dass zusätzliche Änderungen nicht irgendwie dort bekommen haben.

Das macht mich besorgt, dass die Zusammenführung nicht nur das nimmt, was ich geändert habe, was ich erwartet hätte. Kann jemand erklären, was passiert ist?

UPDATE: Als Antwort auf NilObject:

So habe ich 2 Dateien geändert, nur ChangeLog ist relevant, die andere fusionierte Ordnung. Als ich zu meinem normalen Stamm Kasse gehen, ich über den Diff-Befehl und sehen:

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. 

Nach meiner Zusammenführung der früheren Änderungen sieht der Unterschied von ChangeLog wie folgt aus:

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. 

Beachten Sie, dass Der Eintrag, der falsch eingezogen wurde, befand sich nicht in der Datei, in die ich ihn einfügte, aber es war keine meiner Änderungen und hätte sowieso nicht zusammengeführt werden sollen. Es war einfach zu beheben (entfernen Sie die zusätzlichen Zeilen, die nicht Teil meiner Änderungen waren), aber es macht mich immer noch Sorgen über die automatische Zusammenführung in SVN.

Antwort

2

Dies geschieht nur mit Konflikten - im Grunde versucht, SVN, um den Wechsel in, aber (grob gesagt) sah die Änderung als zu fusionieren:

hinzufügen

2008-08-06 Mike Stone <myemail> 

* changed_file: Details. 

vor

2008-08-06 Someone Else <their_email> 

Und Es konnte die Zeile "Someone Else" nicht finden, während die Zusammenführung durchgeführt wird.Wenn es sich nicht um einen Konflikt handelte, wurden nur die von Ihnen erwarteten Änderungen angewendet.

+0

Ich verstehe, warum das so ist (bei einer visuellen/manuellen Zusammenführung muss SVN ein "vorhandenes" Basisdokument für die "ihre" Seite liefern, also die letzte Revision in Ihren Zusammenführungskriterien ist es), aber es ist wirklich böse! (zumindest für jemanden, der neu im Merge-Spiel ist und das Staunen über Cherry-Pickings und andere Merge-Goodness staunt) – Tao

0

Es gibt nicht wirklich genug Informationen, um hier weiterzumachen.

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

werden alle Dateien zusammenführen in der Revision 67212 im Ordner/trunk auf dem Repository und kombiniere sie in Ihrem aktuellen Arbeitsverzeichnis geändert. Wenn Sie dies tun:

svn log -r 67212 

Welche Dateien zeigt es geändert? Zusammenführen zieht nur Änderungen vom ersten Argument und wendet sie auf das zweite Argument an. Es wird nicht zurück auf den Server im ersten Argument hochgeladen.

Wenn dies Ihre Frage nicht beantwortet, könnten Sie weitere Details posten, was genau passiert?

Verwandte Themen