Re: Our merge bases sometimes suck
From: Michael Haggerty <hidden>
Date: 2016-06-15 23:01:37
Subsystem:
the rest · Maintainer:
Linus Torvalds
On 06/13/2014 05:52 PM, Jakub Narębski wrote:
I don't know if it has been fixed, but there is a difference between "git diff A...B" when A and B have one merge base, and "git diff A...B" when there are more than one merge base. When there is one merge base, "git diff A...B" returns simple unified diff equivalent to "git diff $(git merge-base A B) B". It is unsymmetric. But where there are more than one merge base, by design or by accident for "git diff A...B" git 1.9.2 / 1.7.4 returns git diff --cc $(git merge-base --all A B) A B which is *symmetric*, and is combined not unified diff.
Thanks for the information. This doesn't seem to be the case in git 2.0.0. For example, commit 8c0db2f519 in the git project is a merge with two merge bases: $ git --version git version 2.0.0 $ c=8c0db2f5193153ea8a51bb45b0512c5a3889023b $ git merge-base --all $c^1 $c^2 a15f43312f6962959e8daa33df0cf5357852a4b8 9a0e6731c632c841cd2de9dec0b9091b2f10c6fd $ git diff $c^1...$c^2 | head -20
diff --git a/Documentation/git-rev-parse.txtb/Documentation/git-rev-parse.txt index d638bfc..29b5789 100644
--- a/Documentation/git-rev-parse.txt
+++ b/Documentation/git-rev-parse.txt@@ -77,6 +77,14 @@ OPTIONS path of the top-level directory relative to the current directory (typically a sequence of "../", or an empty string). +--git-dir:: + Show `$GIT_DIR` if defined else show the path to the .git directory. + +--short, --short=number:: + Instead of outputting the full SHA1 values of object names try to + abbriviate them to a shorter unique name. When no length is specified + 7 is used. The minimum length is 4. + --since=datestring, --after=datestring:: Parses the date string, and outputs corresponding --max-age= parameter for git-rev-list command.
diff --git a/git-archimport.perl b/git-archimport.perl
Michael -- Michael Haggerty mhagger@alum.mit.edu