2008-08-06 12 views
9

ja po prostu nie seryjnej za pomocą czegoś takiego:SVN scalanie scalone dodatkowych rzeczy

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

miałem tylko 2 pliki, z których jeden jest prosty ChangeLog. Zamiast po prostu scalić moje zmiany, w rzeczywistości pociągnęło ono moją kopalnię oraz kilka poprzednich, które nie znajdowały się w docelowym kodzie docelowym. Zauważyłem, że wystąpił konflikt, kiedy wykonałem polecenie - uruchom, więc zaktualizowałem ChangeLog, i nadal był konflikt (i widziałem konflikt, gdy robiłem faktyczne scalenie).

I potem diffed plik byłem łączących się z:

svn diff -r 67212:67213 ChangeLog 

I widzę tylko zmiany Zrobiłem, więc wiem, że dodatkowe zmiany nie dostać się tam jakoś.

To sprawia, że ​​martwię się, że scalanie nie polega na przyjmowaniu tego, co zmieniłem, czego bym się spodziewał. Czy ktoś może wyjaśnić, co się stało?

UPDATE: W odpowiedzi na NilObject:

Tak, mam 2 pliki zmieniło, tylko zmian jest istotne, inne powstały z połączenia w porządku. Kiedy idę do mojego regularnego bagażnika kasie, mam polecenie diff powyżej patrz:

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. 

Po moim seryjnej poprzednich zmian, diff z ChangeLog wygląda następująco:

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. 

Należy pamiętać, że Wpis, który został nieprawidłowo wciągnięty, nie znajdował się w pliku, do którego go łączę, ale nie był to jeden z moich zmian i nie powinien był zostać połączony. Łatwo to naprawić (usunąć dodatkowe linie, które nie były częścią moich zmian), ale nadal martwię się o automatyczne scalanie w SVN.

Odpowiedz

2

Dzieje się tak tylko z konfliktów - zasadniczo svn próbował scalić zmiany, ale (z grubsza) widział zmianę jako:

Dodaj

2008-08-06 Mike Stone <myemail> 

* changed_file: Details. 

przed

2008-08-06 Someone Else <their_email> 

I nie mógł znaleźć linii Someone Else podczas scalania, więc wstawił ten kontekst w kontekście konfliktu.Jeśli było to połączenie nie będące w konflikcie, zastosowano tylko te zmiany, których oczekiwałeś.

+0

Rozumiem, dlaczego tak właśnie jest (podczas przeprowadzania wizualnego/ręcznego scalania SVN musi dostarczyć dokument "Podstawowy" dla strony "ich", więc ostatnia wersja w kryteriach scalania jest), ale to jest naprawdę paskudne! (przynajmniej dla kogoś nowego w grze Merge i dziwiąc się cudowności wiśni i innych dobroci) – Tao

0

Nie ma wystarczająco dużo informacji, aby przejść dalej.

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

połączy wszystkie pliki zmienione w rewizji 67212 w folderze/trunk na repozytorium i połączyć je w bieżącym katalogu roboczym. Jeśli wykonasz:

svn log -r 67212 

Jakie pliki są wyświetlane? Scal tylko pobierze zmiany z pierwszego argumentu i zastosuje je do drugiego. Nie przesyła z powrotem do serwera w pierwszym argumencie.

Jeśli to nie rozwiąże problemu, czy możesz podać więcej szczegółów na temat tego, co dokładnie się dzieje?