Re: VCS comparison table
- From
Petr Baudis <pasky@suse.cz>
- Date
- Oct 19, 2006, 12:33 UTC
- Message-ID
- <20061019123349.GE20017@pasky.or.cz>
- In-Reply-To
- <vpqirigqzpd.fsf@ecrins.imag.fr>
Dear diary, on Thu, Oct 19, 2006 at 02:04:14PM CEST, I got a letter where Matthieu Moy <Matthieu.Moy@imag.fr> 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
\ /
mrepo1 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<X+d*lMLa^*lN%0]dsXx++lMlN/dsM0<j]dsj
$/=unpack('H*',$_);$_=`echo 16dio\U$k"SK$/SM$n\EsN0p[lN*1
lK[d2%Sa2/d0$^Ixp"|dc`;s/\W//g;$_=pack('H*',/((..)*)$/)