git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* [PATCH v4 0/2] Version fixes and cleanups
@ 2013-10-12  7:07 Felipe Contreras
  2013-10-12  7:07 ` [PATCH v4 1/2] version-gen: cleanup Felipe Contreras
  2013-10-12  7:07 ` [PATCH v4 2/2] version-gen: fix versions Felipe Contreras
  0 siblings, 2 replies; 7+ messages in thread
From: Felipe Contreras @ 2013-10-12  7:07 UTC (permalink / raw)
  To: git; +Cc: Felipe Contreras

Chances since v3:

diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN
index 19902e9..c04c4de 100755
--- a/GIT-VERSION-GEN
+++ b/GIT-VERSION-GEN
@@ -26,8 +26,10 @@ describe () {
 if test -f version
 then
        VN=$(cat version) || VN="$DEF_VER"
-elif test ! -d ${GIT_DIR:-.git} -a ! -f .git || ! describe
+elif test -d ${GIT_DIR:-.git} -o -f .git && describe
 then
+       VN=$(echo "$VN" | sed -e 's/-/~/g')
+else
        VN="$DEF_VER"
 fi
 
diff --git a/Makefile b/Makefile
index 7a8bee7..3588ca1 100644
--- a/Makefile
+++ b/Makefile
@@ -2426,7 +2426,7 @@ quick-install-html:
 ### Maintainer's dist rules
 
 git.spec: git.spec.in GIT-VERSION-FILE
-       sed -e 's/@@VERSION@@/$(subst -,~,$(GIT_VERSION))/g' < $< > $@+
+       sed -e 's/@@VERSION@@/$(GIT_VERSION)/g' < $< > $@+
        mv $@+ $@
 
 GIT_TARNAME = git-$(GIT_VERSION)

Felipe Contreras (2):
  version-gen: cleanup
  version-gen: fix versions

 GIT-VERSION-GEN | 36 ++++++++++++++++++++----------------
 1 file changed, 20 insertions(+), 16 deletions(-)

-- 
1.8.4-fc

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v4 1/2] version-gen: cleanup
  2013-10-12  7:07 [PATCH v4 0/2] Version fixes and cleanups Felipe Contreras
@ 2013-10-12  7:07 ` Felipe Contreras
  2013-10-12  7:07 ` [PATCH v4 2/2] version-gen: fix versions Felipe Contreras
  1 sibling, 0 replies; 7+ messages in thread
From: Felipe Contreras @ 2013-10-12  7:07 UTC (permalink / raw)
  To: git; +Cc: Felipe Contreras

No functional changes.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
---
 GIT-VERSION-GEN | 36 ++++++++++++++++++++----------------
 1 file changed, 20 insertions(+), 16 deletions(-)

diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN
index 06026ea..e96538d 100755
--- a/GIT-VERSION-GEN
+++ b/GIT-VERSION-GEN
@@ -6,22 +6,29 @@ DEF_VER=v1.8.4
 LF='
 '
 
-# First see if there is a version file (included in release tarballs),
-# then try git-describe, then default.
-if test -f version
-then
-	VN=$(cat version) || VN="$DEF_VER"
-elif test -d ${GIT_DIR:-.git} -o -f .git &&
-	VN=$(git describe --match "v[0-9]*" --abbrev=7 HEAD 2>/dev/null) &&
+describe () {
+	VN=$(git describe --match "v[0-9]*" --abbrev=7 HEAD 2>/dev/null) || return 1
 	case "$VN" in
-	*$LF*) (exit 1) ;;
+	*$LF*)
+		return 1
+		;;
 	v[0-9]*)
 		git update-index -q --refresh
 		test -z "$(git diff-index --name-only HEAD --)" ||
-		VN="$VN-dirty" ;;
+		VN="$VN-dirty"
+		return 0
+		;;
 	esac
+}
+
+# First see if there is a version file (included in release tarballs),
+# then try 'git describe', then default.
+if test -f version
+then
+	VN=$(cat version) || VN="$DEF_VER"
+elif test -d ${GIT_DIR:-.git} -o -f .git && describe
 then
-	VN=$(echo "$VN" | sed -e 's/-/./g');
+	VN=$(echo "$VN" | sed -e 's/-/./g')
 else
 	VN="$DEF_VER"
 fi
@@ -34,9 +41,6 @@ then
 else
 	VC=unset
 fi
-test "$VN" = "$VC" || {
-	echo >&2 "GIT_VERSION = $VN"
-	echo "GIT_VERSION = $VN" >$GVF
-}
-
-
+test "$VN" = "$VC" && exit
+echo >&2 "GIT_VERSION = $VN"
+echo "GIT_VERSION = $VN" >$GVF
-- 
1.8.4-fc

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v4 2/2] version-gen: fix versions
  2013-10-12  7:07 [PATCH v4 0/2] Version fixes and cleanups Felipe Contreras
  2013-10-12  7:07 ` [PATCH v4 1/2] version-gen: cleanup Felipe Contreras
@ 2013-10-12  7:07 ` Felipe Contreras
  2013-10-13 21:56   ` David Aguilar
  1 sibling, 1 reply; 7+ messages in thread
From: Felipe Contreras @ 2013-10-12  7:07 UTC (permalink / raw)
  To: git; +Cc: Felipe Contreras

Virtually all packaging guidelines would prefer 1.8.4~rc1, over
1.8.4.rc1 or 1.8.4-rc1, so it makes sense to use that instead.

In particular, the only packaging we provide, git.spec, generates a
wrong version, because git-1.8.4 < git-1.8.4.rc1, changing to ~rc1 fixes
the problem as it's considered newer.

The same happens in dpkg.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
---
 GIT-VERSION-GEN | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN
index e96538d..c04c4de 100755
--- a/GIT-VERSION-GEN
+++ b/GIT-VERSION-GEN
@@ -28,7 +28,7 @@ then
 	VN=$(cat version) || VN="$DEF_VER"
 elif test -d ${GIT_DIR:-.git} -o -f .git && describe
 then
-	VN=$(echo "$VN" | sed -e 's/-/./g')
+	VN=$(echo "$VN" | sed -e 's/-/~/g')
 else
 	VN="$DEF_VER"
 fi
-- 
1.8.4-fc

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH v4 2/2] version-gen: fix versions
  2013-10-12  7:07 ` [PATCH v4 2/2] version-gen: fix versions Felipe Contreras
@ 2013-10-13 21:56   ` David Aguilar
  2013-10-14  2:42     ` Felipe Contreras
  2013-10-14  5:01     ` Jonathan Nieder
  0 siblings, 2 replies; 7+ messages in thread
From: David Aguilar @ 2013-10-13 21:56 UTC (permalink / raw)
  To: Felipe Contreras; +Cc: Git Mailing List

On Sat, Oct 12, 2013 at 12:07 AM, Felipe Contreras
<felipe.contreras@gmail.com> wrote:
> Virtually all packaging guidelines would prefer 1.8.4~rc1, over
> 1.8.4.rc1 or 1.8.4-rc1, so it makes sense to use that instead.
>
> In particular, the only packaging we provide, git.spec, generates a
> wrong version, because git-1.8.4 < git-1.8.4.rc1, changing to ~rc1 fixes
> the problem as it's considered newer.
>
> The same happens in dpkg.
>
> Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
> ---
>  GIT-VERSION-GEN | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN
> index e96538d..c04c4de 100755
> --- a/GIT-VERSION-GEN
> +++ b/GIT-VERSION-GEN
> @@ -28,7 +28,7 @@ then
>         VN=$(cat version) || VN="$DEF_VER"
>  elif test -d ${GIT_DIR:-.git} -o -f .git && describe
>  then
> -       VN=$(echo "$VN" | sed -e 's/-/./g')
> +       VN=$(echo "$VN" | sed -e 's/-/~/g')
>  else
>         VN="$DEF_VER"
>  fi
> --

This seems related:

http://lintian.debian.org/tags/rc-version-greater-than-expected-version.html

Should the RC tags in the Git repo be named v1.2.3~rc4 (tilde-rc#)
instead of dash-rc#, or does that not matter?

If so, would that change anything about this patch, or is it better to
normalize it all here?

The input is subtly different sometimes so I'm curious whether whether
"~" is preferred in all cases (particularly, by all package managers).
 e.g.

$ git describe v1.5.0^
v1.5.0-rc4-372-g26cfcfb

$ git describe v1.5.0.1^
v1.5.0-27-g38eb932
-- 
David

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v4 2/2] version-gen: fix versions
  2013-10-13 21:56   ` David Aguilar
@ 2013-10-14  2:42     ` Felipe Contreras
  2013-10-14  5:01     ` Jonathan Nieder
  1 sibling, 0 replies; 7+ messages in thread
From: Felipe Contreras @ 2013-10-14  2:42 UTC (permalink / raw)
  To: David Aguilar; +Cc: Git Mailing List

On Sun, Oct 13, 2013 at 4:56 PM, David Aguilar <davvid@gmail.com> wrote:
> On Sat, Oct 12, 2013 at 12:07 AM, Felipe Contreras
> <felipe.contreras@gmail.com> wrote:
>> Virtually all packaging guidelines would prefer 1.8.4~rc1, over
>> 1.8.4.rc1 or 1.8.4-rc1, so it makes sense to use that instead.
>>
>> In particular, the only packaging we provide, git.spec, generates a
>> wrong version, because git-1.8.4 < git-1.8.4.rc1, changing to ~rc1 fixes
>> the problem as it's considered newer.
>>
>> The same happens in dpkg.
>>
>> Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
>> ---
>>  GIT-VERSION-GEN | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN
>> index e96538d..c04c4de 100755
>> --- a/GIT-VERSION-GEN
>> +++ b/GIT-VERSION-GEN
>> @@ -28,7 +28,7 @@ then
>>         VN=$(cat version) || VN="$DEF_VER"
>>  elif test -d ${GIT_DIR:-.git} -o -f .git && describe
>>  then
>> -       VN=$(echo "$VN" | sed -e 's/-/./g')
>> +       VN=$(echo "$VN" | sed -e 's/-/~/g')
>>  else
>>         VN="$DEF_VER"
>>  fi
>> --
>
> This seems related:
>
> http://lintian.debian.org/tags/rc-version-greater-than-expected-version.html
>
> Should the RC tags in the Git repo be named v1.2.3~rc4 (tilde-rc#)
> instead of dash-rc#, or does that not matter?

I thought so first, but then I realized ~ is not allowed in a ref.

> If so, would that change anything about this patch, or is it better to
> normalize it all here?
>
> The input is subtly different sometimes so I'm curious whether whether
> "~" is preferred in all cases (particularly, by all package managers).
>  e.g.

All package managers I investigated do handle ~ specially, and thus
recommend it for rc versioning, except pacman. So in pacman,
v1.5.0~rc4 would remain newer than v1.5.0, but that's not different
from the current situation, and there isn't much we can do about that.

> $ git describe v1.5.0^
> v1.5.0-rc4-372-g26cfcfb
>
> $ git describe v1.5.0.1^
> v1.5.0-27-g38eb932

At least both in RPM and dpkg, 1.5.0~27 is newer than 1.5.0~rc4.

-- 
Felipe Contreras

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v4 2/2] version-gen: fix versions
  2013-10-13 21:56   ` David Aguilar
  2013-10-14  2:42     ` Felipe Contreras
@ 2013-10-14  5:01     ` Jonathan Nieder
  2013-10-14  5:29       ` Felipe Contreras
  1 sibling, 1 reply; 7+ messages in thread
From: Jonathan Nieder @ 2013-10-14  5:01 UTC (permalink / raw)
  To: David Aguilar; +Cc: Felipe Contreras, Git Mailing List

Hi,

David Aguilar wrote:
> Felipe Contreras <felipe.contreras@gmail.com> wrote:

>> Virtually all packaging guidelines would prefer 1.8.4~rc1, over
>> 1.8.4.rc1 or 1.8.4-rc1, so it makes sense to use that instead.
>>
>> In particular, the only packaging we provide, git.spec, generates a
>> wrong version, because git-1.8.4 < git-1.8.4.rc1, changing to ~rc1 fixes
>> the problem as it's considered newer.

A more conservative fix would be to tweak the .spec generation in the
Makefile to follow whatever the appropriate Red Hat convention is.
For example, something like this:

-- >8 --
diff --git i/Makefile w/Makefile
index 0f931a2..73bd89d 100644
--- i/Makefile
+++ w/Makefile
@@ -2385,8 +2385,9 @@ quick-install-html:
 
 ### Maintainer's dist rules
 
+GIT_VERSION_RPM = $(subst -rc,~rc,$(GIT_VERSION))
 git.spec: git.spec.in GIT-VERSION-FILE
-	sed -e 's/@@VERSION@@/$(GIT_VERSION)/g' < $< > $@+
+	sed -e 's/@@VERSION@@/$(GIT_VERSION_RPM)/g' < $< > $@+
 	mv $@+ $@
 
 GIT_TARNAME = git-$(GIT_VERSION)
-- 8< --

That way, programs that parse the git version by splitting at '.'
(there are more than a few, unfortunately) would continue to work, but
the packaging system would get the benefit of the proposed versioning
style change.

>> The same happens in dpkg.

Have you tested this?  I thought the Debian packaging did not use the
GIT-VERSION-GEN generated version in this way.

[...]
> This seems related:
>
> http://lintian.debian.org/tags/rc-version-greater-than-expected-version.html

If I understand correctly, that page has an exhaustive list of affected
packages in the Debian archive and doesn't include git.

Thanks and hope that helps,
Jonathan

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH v4 2/2] version-gen: fix versions
  2013-10-14  5:01     ` Jonathan Nieder
@ 2013-10-14  5:29       ` Felipe Contreras
  0 siblings, 0 replies; 7+ messages in thread
From: Felipe Contreras @ 2013-10-14  5:29 UTC (permalink / raw)
  To: Jonathan Nieder; +Cc: David Aguilar, Git Mailing List

On Mon, Oct 14, 2013 at 12:01 AM, Jonathan Nieder <jrnieder@gmail.com> wrote:
> Hi,
>
> David Aguilar wrote:
>> Felipe Contreras <felipe.contreras@gmail.com> wrote:
>
>>> Virtually all packaging guidelines would prefer 1.8.4~rc1, over
>>> 1.8.4.rc1 or 1.8.4-rc1, so it makes sense to use that instead.
>>>
>>> In particular, the only packaging we provide, git.spec, generates a
>>> wrong version, because git-1.8.4 < git-1.8.4.rc1, changing to ~rc1 fixes
>>> the problem as it's considered newer.
>
> A more conservative fix would be to tweak the .spec generation in the
> Makefile to follow whatever the appropriate Red Hat convention is.
> For example, something like this:

It's not Red Hat's convention, it's RPM, and dpkg, so basically every
package manager that most distributions out there use.

And I already sent a patch for that which was ignored:

http://article.gmane.org/gmane.comp.version-control.git/234794

> -- >8 --
> diff --git i/Makefile w/Makefile
> index 0f931a2..73bd89d 100644
> --- i/Makefile
> +++ w/Makefile
> @@ -2385,8 +2385,9 @@ quick-install-html:
>
>  ### Maintainer's dist rules
>
> +GIT_VERSION_RPM = $(subst -rc,~rc,$(GIT_VERSION))

That wouldn't work; VERSION doesn't have '-rc', it has '.rc'. and
what's the point of creating a new variable? It's a was of space.

>  git.spec: git.spec.in GIT-VERSION-FILE
> -       sed -e 's/@@VERSION@@/$(GIT_VERSION)/g' < $< > $@+
> +       sed -e 's/@@VERSION@@/$(GIT_VERSION_RPM)/g' < $< > $@+
>         mv $@+ $@
>
>  GIT_TARNAME = git-$(GIT_VERSION)
> -- 8< --
>
> That way, programs that parse the git version by splitting at '.'
> (there are more than a few, unfortunately) would continue to work,

Do you have any evidence that such programs exist? Specifically,
programs that work with 1.8.4.rc1, but not 1.8.4-rc1 or 1.8.4~rc1. I
find that very very very unlikely.

Anyway, in the very very very unlikely scenario that somebody's script
does break they can report that, and we can revert. What's the
problem?

> but
> the packaging system would get the benefit of the proposed versioning
> style change.
>
>>> The same happens in dpkg.
>
> Have you tested this?

% dpkg --compare-versions 1.8.4 gt 1.8.4~rc1 && echo yes || echo no
yes
 % dpkg --compare-versions 1.8.4 gt 1.8.4-rc1 && echo yes || echo no
no

> I thought the Debian packaging did not use the
> GIT-VERSION-GEN generated version in this way.

It doesn't matter. The name of the package would be git-1.8.4~rc1, and
'git --version' would return 1.8.4.rc1, that's inconsistent.

Why be inconsistent when we can be consistent?

> [...]
>> This seems related:
>>
>> http://lintian.debian.org/tags/rc-version-greater-than-expected-version.html
>
> If I understand correctly, that page has an exhaustive list of affected
> packages in the Debian archive and doesn't include git.

Because a) they don't package release candidates, and b) they use a
different version (s/\./~/).

-- 
Felipe Contreras

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2013-10-14  5:29 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-10-12  7:07 [PATCH v4 0/2] Version fixes and cleanups Felipe Contreras
2013-10-12  7:07 ` [PATCH v4 1/2] version-gen: cleanup Felipe Contreras
2013-10-12  7:07 ` [PATCH v4 2/2] version-gen: fix versions Felipe Contreras
2013-10-13 21:56   ` David Aguilar
2013-10-14  2:42     ` Felipe Contreras
2013-10-14  5:01     ` Jonathan Nieder
2013-10-14  5:29       ` Felipe Contreras

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).