From: Petr Baudis Date: Thu, 19 Oct 2006 12:33:49 GMT Subject: Re: VCS comparison table Message-ID: <20061019123349.GE20017@pasky.or.cz> In-Reply-To: Dear diary, on Thu, Oct 19, 2006 at 02:04:14PM CEST, I got a letter where Matthieu Moy said that... > What people call "leftmost ancestor" is the revision which used to be > the tip at the time you commited. For example, if you do "bzr diff; > bzr commit" the diff shown before is the same as the one got with > "bzr diff -r last:1" right after the commit. The lack of parents ordering in Git is directly connected with fast-forwarding. Consider repo1 repo2 a a / / b c Now repo2 merges with repo1: repo1 repo2 a a / / \ b c b \ / m repo1 tip ('b') is not ancestor of repo2 tip ('c') so a three-way merge is done and a new 'm' merge commit is created. And now repo1 merges with repo2: repo1 repo2 a a / \ / \ c b c b \ / \ / m m Because previous repo1 tip ('b') was ancestor of repo2 tip ('m'), a fast-forward happenned and repo1 tip simply moved to 'm'. But this "flipped" the development from repo1 POV - you cannot assume anymore that the first ("leftmost") parent is special. -- Petr "Pasky" Baudis Stuff: http://pasky.or.cz/ #!/bin/perl -sp0777i