2013-03-15 18 views
7

Co to jest merkurialny odpowiednik gits no-fast-forward merge (w przypadku, gdyby szybki forward byłby możliwy)?Czy istnieje odpowiednik mercurial do gits no-fast-forward merge?

Edit

Załóżmy, że masz oddział/zakładka w twojej głowie/końcówce master/domyślnie:

o feature 
| 
o 
| 
o master/default 
| 
... 

Prosty szybki seryjnej naprzód skutkowałoby:

o feature/master/default 
| 
o 
| 
o 
| 
... 

Połączenie typu "nie szybkiego przewinięcia" powinno wyglądać następująco:

o merge commit - feature/master/default 
| \ 
| o  
| | 
| o 
|/
o 
| 
... 
+0

"Aktualizacja"? Czy to nie jest szybkie połączenie? Po prostu aktualizuje? Oczywiście Mercurial nie wykryje tego, ale nie sądzę, że spróbuje przeprowadzić scalenie. –

+0

Prosił o szybką alternatywę, a nie szybką alternatywę. :) –

+0

Jeśli nie możesz znaleźć żadnego, czy manekin zatwierdzenia w master przed scaleniem produkuje to, co chcesz? –

Odpowiedz

7

To zależy od tego, w jaki sposób został zatwierdzony oddział funkcji.

Jeśli funkcja została opracowana dla nazwanego oddziału, można uzyskać odpowiednik bez szybkiego przewijania do przodu. W rzeczywistości nazwanych oddziałów nie można łączyć w żaden inny sposób.

hg update default 
hg branch feature-1 
...work... 
hg commit -m "implemented feature on named branch" 
hg update default 
hg merge feature-1 
hg commit -m "merged feature-1 to default" 

Spowoduje to na wykresie tak:

o merged feature-1 to default 
|\ 
| o feature-1: implemented feature on named branch 
|/ 
o 
| 

Zadziała tylko z wymienionych gałęzi (czyli oddziały utworzone przy użyciu komendy hg branch). Nie działa w przypadku anonimowych oddziałów lub zakładek.

Możesz również być zainteresowany this thread(dead-link) na liście mailowej Mercurial, która omawia problem.

+0

Byłby to pomysł dla osób, które naprawdę lubią "interpunkcja" zestawu zmian scalania do scalania funkcji. Masz nazwaną gałąź o nazwie "newfeature", a następnie kilka zakładek w tej gałęzi. – Omnifarious

+0

Zdecydowanie najlepszą częścią tej odpowiedzi jest ostatnia linia. – Ringding

+0

Możesz dokonać scalenia Oedipusa w Mercurial z anonimowymi głowami, używając polecenia "debugsetparents". Zobacz: http://hgtip.com/tips/advanced/2010-04-23-debug-command-tricks/#3-simulate-gits-no-ff-merges-with-anonymous-heads. Wydaje mi się jednak, że komendy debugowania nie mają gwarancji kompatybilności z resztą Mercurial. – jwd