bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] Do not limit git-version-gen to work only under the reposito


From: Jim Meyering
Subject: Re: [PATCH] Do not limit git-version-gen to work only under the repository root.
Date: Wed, 13 Oct 2010 22:28:20 +0200

Jim Meyering wrote:

> Giuseppe Scrivano wrote:
>
>> Hello,
>>
>> Jim Meyering <address@hidden> writes:
>>
>>> Not sure about more "elegant", but here's a lower cost method:
>>
>> Thanks for the patch but I think the problem you have reported here:
>>
>>   http://article.gmane.org/gmane.comp.lib.gnulib.bugs/21845
>>
>> persists.
>>
>>
>> Here an example, where /tmp/foo is a git repository.
>>
>> /tmp/foo$ mkdir bar && cd bar && git rev-parse --verify HEAD
>> eed6a47d30bff7fd268411ae8a0d893c3827edc1
>> /tmp/foo/bar$
>>
>>
>> Instead, using the more expensive "git log", you are sure the directory
>> is controlled by git:
>>
>> /tmp/foo$ (test -n "$(git log -z -n1 .)") > /dev/null 2>&1 && echo FOO
>> FOO
>>
>> /tmp/foo$ mkdir bar && cd bar \
>>           && (test -n "$(git log -z -n1 .)") > /dev/null 2>&1 && echo BAR
>> /tmp/foo/bar$
>
> Hi Giuseppe,
>
> Thanks for pointing that out.
>
> In that case, this should be a little better:
> [I didn't see a need for your -z, and --pretty=format:x
> simply avoids printing out unnecessary information.
> Also, I didn't see a need for the outer subshell, so removed it. ]
>
>     test -n "$(git log -1 --pretty=format:x . 2>/dev/null)"
>
>>> * build-aux/git-version-gen: Adjust this script so that it works
>>> when run from any working directory beneath the top-level .git/-
>>> containing directory.  Inspired by a patch from Giusseppe Scrivano,
>>> http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/21843/focus=21847
>>
>> oops, typo in my name.
>
> Sorry about that.
> I'll correct the ChangeLog entry.

Thanks again for the quick corrections.
Here's a better version.  I'll wait for review this time ;-)

>From b917191d0d7c5588852be7825575e543bc40dd9e Mon Sep 17 00:00:00 2001
From: Jim Meyering <address@hidden>
Date: Wed, 13 Oct 2010 22:11:31 +0200
Subject: [PATCH] git-version-gen: do require git-VC'd files in cwd

* build-aux/git-version-gen: Reject a git version string
if there are no commits associated with the current directory.
This avoids an unlikely false-positive (unrelated dir whose parent
repository also contains a tag matching v*), as pointed out
by Giuseppe Scrivano in
http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/21843/focus=23664
---
 ChangeLog                 |   10 +++++++++-
 build-aux/git-version-gen |    9 +++++----
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 9a4ed57..7b358af 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,9 +1,17 @@
 2010-10-13  Jim Meyering  <address@hidden>

+       git-version-gen: do require git-VC'd files in cwd
+       * build-aux/git-version-gen: Reject a git version string
+       if there are no commits associated with the current directory.
+       This avoids an unlikely false-positive (unrelated dir whose parent
+       repository also contains a tag matching v*), as pointed out
+       by Giuseppe Scrivano in
+       http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/21843/focus=23664
+
        git-version-gen: don't require that .git/ be in the current dir
        * build-aux/git-version-gen: Adjust this script so that it works
        when run from any working directory beneath the top-level .git/-
-       containing directory.  Inspired by a patch from Giusseppe Scrivano,
+       containing directory.  Inspired by a patch from Giuseppe Scrivano,
        http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/21843/focus=21847

        test-select: avoid warn_unused_result warnings
diff --git a/build-aux/git-version-gen b/build-aux/git-version-gen
index 6262775..795a98b 100755
--- a/build-aux/git-version-gen
+++ b/build-aux/git-version-gen
@@ -1,6 +1,6 @@
 #!/bin/sh
 # Print a version string.
-scriptversion=2010-10-13.14; # UTC
+scriptversion=2010-10-13.20; # UTC

 # Copyright (C) 2007-2010 Free Software Foundation, Inc.
 #
@@ -98,9 +98,10 @@ fi
 if test -n "$v"
 then
     : # use $v
-# Otherwise, if we're anywhere beneath a .git directory, and "git describe"
-# output looks sensible, use that to derive a version string.
-elif git rev-parse --verify HEAD > /dev/null 2>&1 \
+# Otherwise, if there is at least one git commit involving the working
+# directory, and "git describe" output looks sensible, use that to
+# derive a version string.
+elif test "`git log -1 --pretty=format:x . 2>&1`" = x \
     && v=`git describe --abbrev=4 --match='v*' HEAD 2>/dev/null \
          || git describe --abbrev=4 HEAD 2>/dev/null` \
     && v=`printf '%s\n' "$v" | sed "$tag_sed_script"` \
--
1.7.3.1.104.gc752e



reply via email to

[Prev in Thread] Current Thread [Next in Thread]