[PATCH 2/2] describe: document and test --first-parent

2012-09-11 Thread Michael J Gruber

Signed-off-by: Michael J Gruber g...@drmicha.warpmail.net
---
 Documentation/git-describe.txt | 16 +++-
 t/t6120-describe.sh|  7 +++
 2 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/Documentation/git-describe.txt b/Documentation/git-describe.txt
index 72d6bb6..9fb5c84 100644
--- a/Documentation/git-describe.txt
+++ b/Documentation/git-describe.txt
@@ -84,6 +84,10 @@ OPTIONS
Only consider tags matching the given pattern (can be used to avoid
leaking private tags made from the repository).
 
+--first-parent::
+   Only consider tags which can be reached from 'committish' by a first
+   parent walk, i.e. only those which are not on side branches.
+
 --always::
Show uniquely abbreviated commit object as fallback.
 
@@ -129,6 +133,14 @@ closest tagname without any suffix:
[torvalds@g5 git]$ git describe --abbrev=0 v1.0.5^2
tags/v1.0.0
 
+With --first-parent, tags on side branches are not considered:
+
+   $ git describe v1.1.0^
+   v1.0.7-44-ge77f489
+
+   $ git describe --first-parent v1.1.0^
+   v1.0.0-41-ge77f489
+
 Note that the suffix you get if you type these commands today may be
 longer than what Linus saw above when he ran these commands, as your
 git repository may have new commits whose object names begin with
@@ -148,7 +160,9 @@ is found, its name will be output and searching will stop.
 If an exact match was not found, 'git describe' will walk back
 through the commit history to locate an ancestor commit which
 has been tagged.  The ancestor's tag will be output along with an
-abbreviation of the input committish's SHA1.
+abbreviation of the input committish's SHA1.  With '--first-parent',
+'git describe' will walk the history only along the first parent
+of each commit.
 
 If multiple tags were found during the walk then the tag which
 has the fewest commits different from the input committish will be
diff --git a/t/t6120-describe.sh b/t/t6120-describe.sh
index f67aa6f..2524236 100755
--- a/t/t6120-describe.sh
+++ b/t/t6120-describe.sh
@@ -103,6 +103,13 @@ check_describe c-* --tags HEAD^^2
 check_describe B --tags HEAD^^2^
 check_describe e --tags HEAD^^^
 
+check_describe R-* --first-parent HEAD
+check_describe R-* --first-parent HEAD^
+check_describe R-* --first-parent HEAD^^
+check_describe B-* --first-parent HEAD^^2
+check_describe B --first-parent HEAD^^2^
+check_describe R-* --first-parent HEAD^^^
+
 check_describe heads/master --all HEAD
 check_describe tags/c-* --all HEAD^
 check_describe tags/e --all HEAD^^^
-- 
1.7.12.463.gbd9d638

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2/2] describe: document and test --first-parent

2012-09-11 Thread Junio C Hamano
Michael J Gruber g...@drmicha.warpmail.net writes:

 Signed-off-by: Michael J Gruber g...@drmicha.warpmail.net
 ---
  Documentation/git-describe.txt | 16 +++-
  t/t6120-describe.sh|  7 +++
  2 files changed, 22 insertions(+), 1 deletion(-)

 diff --git a/Documentation/git-describe.txt b/Documentation/git-describe.txt
 index 72d6bb6..9fb5c84 100644
 --- a/Documentation/git-describe.txt
 +++ b/Documentation/git-describe.txt
 @@ -84,6 +84,10 @@ OPTIONS
   Only consider tags matching the given pattern (can be used to avoid
   leaking private tags made from the repository).
  
 +--first-parent::
 + Only consider tags which can be reached from 'committish' by a first
 + parent walk, i.e. only those which are not on side branches.
 +

[PATCH 1/2] says:

git describe --contains --first-parent is forbidden because git name-rev
(which is called by that) favors first-parent transversal already,
although not strictly so.

but the end-users won't read the log message, so something like that
need to be here, I guess.

But if name-rev does more-or-less first-parent anyway, perhaps
simply ignoring --first-parent when doing --contains may make more
sense?
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html