SVN îmbină fuzionarea cu alte lucruri suplimentare

Am facut o fuzionare folosind ceva de genul:

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

Am avut doar 2 fișiere, dintre care unul este un ChangeLog simplu. Mai degrabă decât să mi se alăture schimbările ChangeLog , mi-a tras de fapt câteva dintre cele precedente care nu erau în ChangeLog destinație. Am observat că a existat un conflict atunci când am executat - dry-run, așa că am actualizat ChangeLog , și a mai rămas un conflict (și am văzut conflictul atunci când am făcut fuzionarea reală).

Apoi am difuzat mai târziu în dosarul pe care mi-l fuzionam:

svn diff -r 67212:67213 ChangeLog

Și văd doar modificările pe care le-am făcut, așa că știu că schimbările suplimentare nu au intrat într-un fel.

Acest lucru mă face să fiu îngrijorat de faptul că îmbinarea nu înseamnă doar să iau ceea ce am schimbat, ceea ce aș fi așteptat. Poate cineva să explice ce sa întâmplat?

UPDATE: Ca raspuns la NilObject:

Deci, am modificat 2 fișiere, numai ChangeLog este relevant, cealaltă fuzionă amendă. Când mă duc la verificarea regulată a portbagajului, fac comanda diff de mai sus și văd:

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

    * theirChanges: Details.

După îmbinarea modificărilor mele anterioare, diferența dintre ChangeLog arată astfel:

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

    * olderChange: Details.

Rețineți că intrarea incorect trasă nu a fost în fișierul la care merg, dar totuși nu a fost una dintre modificările mele și nu ar fi trebuit să fie fuzionat oricum. A fost ușor să rezolvați (eliminați liniile suplimentare care nu făceau parte din modificările mele), dar totuși mă îngrijorează în mod automat de fuzionarea în SVN .

0
fr hi bn

2 răspunsuri

Nu există suficiente informații pentru a merge aici.

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

va fuziona orice fișiere modificate în revizuirea 67212 în folderul / portbagajul din depozit și să le îmbină în directorul de lucru curent. Dacă faci:

svn log -r 67212

Ce fișiere se arată schimbate? Merge va trage doar modificări de la primul argument și le va aplica la al doilea. Nu se încarcă înapoi la server în primul argument.

Dacă aceasta nu răspunde la întrebarea dvs., ați putea posta mai multe detalii cu privire la exact ce se întâmplă?

0
adăugat

Acest lucru se întâmplă numai cu conflicte - în esență, svn a încercat să îmbine schimbarea, dar (în mare parte) a văzut schimbarea ca:

Adăuga

2008-08-06  Mike Stone  

* changed_file: Details.

inainte de

2008-08-06  Someone Else  <their_email>

Și nu a reușit să găsească linia Cineva Else în timp ce făcea fuzionarea, așa că a înnebunit atât de mult în context atunci când a pus în conflict. Dacă a fost o fuzionare neconflictată, s-ar fi aplicat numai modificările pe care le-ați așteptat.

0
adăugat
Înțeleg de ce acesta este modul în care este (atunci când faceți o combinare vizuală / manuală SVN trebuie să furnizeze un document de bază "Existente" pentru partea "lor", deci cea mai recentă revizuire a criteriilor dvs. de fuziune este aceasta), dar este într-adevăr neplăcut! (cel puțin pentru cineva nou la jocul Merge și minunându-se la minunea cireșelor și a altor fapte de îmbinare)
adăugat autor Tao, sursa