threads / discuss / 43073

Re: git tag: don't complain of empty messages

Subject: Re: git tag: don't complain of empty messages

## tl;dr

10 messages between Nov 15, 2006 and Nov 26, 2006.

replies: 9people: 4as markdown or json

Han-Wen Nienhuys· Nov 15, 2006, 15:34 UTC · lore

git tag: don't complain of empty messages

Hello,

GIT refuses to set annotated tags without a comment. I think this is a silly restriction when the message is explicitly set to the empty string.

The attached patch should fix this; Unfortunately, I've been unable to test it. Running the script with sh -x stops at

++exec /home/hanwen/usr/pkg/git/bin/git-sh-setup
-- 
  Han-Wen Nienhuys - hanwen@xs4all.nl - http://www.xs4all.nl/~hanwen


commit 446cfbd9edcfaf5fe76f597823e0e3314d091489
Author: Han-Wen Nienhuys <hanwen@lilypond.org>
Date:   Wed Nov 15 16:27:27 2006 +0100

    always set tag if -m is given, even if empty

diff --git a/git-tag.sh b/git-tag.sh
index ac269e3..f2533a3 100755
--- a/git-tag.sh
+++ b/git-tag.sh
@@ -5,6 +5,7 @@ USAGE='-l [<pattern>] | [-a | -s | -u <k
 SUBDIRECTORY_OK='Yes'
 . git-sh-setup
 
+message_given=
 annotate=
 signed=
 force=
@@ -37,6 +38,7 @@ do
     	annotate=1
 	shift
 	message="$1"
+	message_given=1
 	;;
     -u)
 	annotate=1
@@ -83,7 +85,7 @@ tagger=$(git-var GIT_COMMITTER_IDENT) ||
 trap 'rm -f "$GIT_DIR"/TAG_TMP* "$GIT_DIR"/TAG_FINALMSG "$GIT_DIR"/TAG_EDITMSG' 0
 
 if [ "$annotate" ]; then
-    if [ -z "$message" ]; then
+    if [ -z "$message_given" ]; then
         ( echo "#"
           echo "# Write a tag message"
           echo "#" ) > "$GIT_DIR"/TAG_EDITMSG
@@ -95,7 +97,7 @@ if [ "$annotate" ]; then
     grep -v '^#' <"$GIT_DIR"/TAG_EDITMSG |
     git-stripspace >"$GIT_DIR"/TAG_FINALMSG
 
-    [ -s "$GIT_DIR"/TAG_FINALMSG ] || {
+    [ -s "$GIT_DIR"/TAG_FINALMSG -o -n "$message_given" ] || {
 	echo >&2 "No tag message?"
 	exit 1
     }
Johannes Schindelin· Nov 15, 2006, 16:02 UTC · re: Han-Wen Nienhuys · lore
Hi,
On Wed, 15 Nov 2006, Han-Wen Nienhuys wrote:
> GIT refuses to set annotated tags without a comment. I think this is a silly
> restriction when the message is explicitly set to the empty string.

I think that this behaviour is on purpose: The tag will be identified (like all objects in git) by its contents. The rationale: the filename does not matter, since the tag _object_ is not identified by it. So, in case you lose your .git/refs/tags/ directory, you can still reconstruct the tags with "git-fsck-objects --full".

Ciao, Dscho

Han-Wen Nienhuys· Nov 15, 2006, 16:05 UTC · re: Johannes Schindelin · lore
Johannes Schindelin escreveu:
Show 12 quoted lines
> Hi,
> 
> On Wed, 15 Nov 2006, Han-Wen Nienhuys wrote:
> 
>> GIT refuses to set annotated tags without a comment. I think this is a silly
>> restriction when the message is explicitly set to the empty string.
> 
> I think that this behaviour is on purpose: The tag will be identified 
> (like all objects in git) by its contents. The rationale: the filename 
> does not matter, since the tag _object_ is not identified by it. So, in 
> case you lose your .git/refs/tags/ directory, you can still reconstruct 
> the tags with "git-fsck-objects --full".

Without a message, the tag can still be identified by its name, which is in the tag object contents.

Junio C Hamano· Nov 15, 2006, 18:23 UTC · re: Han-Wen Nienhuys · lore
Han-Wen Nienhuys <hanwen@xs4all.nl> writes:
Show 19 quoted lines
> Hello,
>
> GIT refuses to set annotated tags without a comment. I think this is a
> silly restriction when the message is explicitly set to the empty
> string.
>
> The attached patch should fix this;  Unfortunately, I've been unable
> to test it. Running the script with sh -x stops at
>
> ++exec /home/hanwen/usr/pkg/git/bin/git-sh-setup
>
> -- 
>  Han-Wen Nienhuys - hanwen@xs4all.nl - http://www.xs4all.nl/~hanwen
> commit 446cfbd9edcfaf5fe76f597823e0e3314d091489
> Author: Han-Wen Nienhuys <hanwen@lilypond.org>
> Date:   Wed Nov 15 16:27:27 2006 +0100
>
>     always set tag if -m is given, even if empty
>
Please follow Documentation/SubmittingPatches.
Show 20 quoted lines
> diff --git a/git-tag.sh b/git-tag.sh
> index ac269e3..f2533a3 100755
> --- a/git-tag.sh
> +++ b/git-tag.sh
> @@ -5,6 +5,7 @@ USAGE='-l [<pattern>] | [-a | -s | -u <k
>  SUBDIRECTORY_OK='Yes'
>  . git-sh-setup
>  
> +message_given=
>  annotate=
>  signed=
>  force=
> @@ -37,6 +38,7 @@ do
>      	annotate=1
>  	shift
>  	message="$1"
> +	message_given=1
>  	;;
>      -u)
>  	annotate=1

If you are going to do this, this hunk should be changed to check if the command line ended with "-m" without next parameter, in which case it should error out.

I do not have a strong objection against allowing tags without messages, but at the same time I do not see a compelling reason to allow them either. Care to explain what workflow is helped by an empty tag?

Han-Wen Nienhuys· Nov 16, 2006, 00:14 UTC · re: Junio C Hamano · lore
Junio C Hamano escreveu:
> I do not have a strong objection against allowing tags without
> messages, but at the same time I do not see a compelling reason
> to allow them either.  Care to explain what workflow is helped
> by an empty tag?

the tagname usually is enough of a description, but I want the tags to end up in the object DB, eg.:

   git tag release/2.10.0 HEAD
now I have to use
   git tag -m "this really sucks"  release/2.10.0 HEAD
Jakub Narebski· Nov 16, 2006, 00:38 UTC · re: Han-Wen Nienhuys · lore
Han-Wen Nienhuys wrote:
Show 14 quoted lines
> Junio C Hamano escreveu:
>> I do not have a strong objection against allowing tags without
>> messages, but at the same time I do not see a compelling reason
>> to allow them either.  Care to explain what workflow is helped
>> by an empty tag?
> 
> the tagname usually is enough of a description, but I want the tags to 
> end up in the object DB, eg.:
> 
>    git tag release/2.10.0 HEAD
> 
> now I have to use
> 
>    git tag -m "this really sucks"  release/2.10.0 HEAD
Why not
   git tag -m "release 2.10.0" release/2.10.0 HEAD

This way you would know what tag points to even if you loose it's reference...

-- 
Jakub Narebski
Warsaw, Poland
ShadeHawk on #git
Han-Wen Nienhuys· Nov 16, 2006, 01:27 UTC · re: Jakub Narebski · lore
Jakub Narebski escreveu:
Show 22 quoted lines
> Han-Wen Nienhuys wrote:
> 
>> Junio C Hamano escreveu:
>>> I do not have a strong objection against allowing tags without
>>> messages, but at the same time I do not see a compelling reason
>>> to allow them either.  Care to explain what workflow is helped
>>> by an empty tag?
>> the tagname usually is enough of a description, but I want the tags to 
>> end up in the object DB, eg.:
>>
>>    git tag release/2.10.0 HEAD
>>
>> now I have to use
>>
>>    git tag -m "this really sucks"  release/2.10.0 HEAD
> 
> Why not
> 
>    git tag -m "release 2.10.0" release/2.10.0 HEAD
> 
> This way you would know what tag points to even if you loose it's
> reference...

that would double, given that the tag name is already in the tag object. Currently, I have

** [lilydev@haring gub]$ cat .git/refs/tags/gubrelease-2.9.29-2 1ac5c78609a9f79787825b62c9576542eedce795

[lilydev@haring gub]$ git cat-file tag 1ac5c78609a9f79787825b62c9576542eedce795

object b75db784e3d6a9e1d2cff3f77036aaa88598b53c type commit tag gub-2.9.29-2 tagger Han-Wen Nienhuys <lilydev@haring.localdomain> 1162921716 +0100

build and upload **

'build and upload' is a polite way of saying 'this really sucks'.
-- 
  Han-Wen Nienhuys - hanwen@xs4all.nl - http://www.xs4all.nl/~hanwen
Han-Wen Nienhuys· Nov 26, 2006, 16:42 UTC · re: Junio C Hamano · lore
Junio C Hamano escreveu:
> Please follow Documentation/SubmittingPatches.
See below, hope I didn't mess up.
From be40730d19592f9db8f07f619f5723060c2f4f0c Mon Sep 17 00:00:00 2001
From: Han-Wen Nienhuys <hanwen@lilypond.org>
Date: Sun, 26 Nov 2006 17:41:30 +0100
Subject: [PATCH] allow empty tag message if -m is given explicitly.
---
 git-tag.sh |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/git-tag.sh b/git-tag.sh
index ac269e3..d53f94c 100755
--- a/git-tag.sh
+++ b/git-tag.sh
@@ -5,6 +5,7 @@ USAGE='-l [<pattern>] | [-a | -s | -u <k
 SUBDIRECTORY_OK='Yes'
 . git-sh-setup
 
+message_given=
 annotate=
 signed=
 force=
@@ -37,6 +38,12 @@ do
     	annotate=1
 	shift
 	message="$1"
+	if test "$#" = "0"; then
+	    die "error: option -m needs an argument"
+	    exit 2
+	else
+	    message_given=1
+	fi
 	;;
     -u)
 	annotate=1
@@ -83,7 +90,7 @@ tagger=$(git-var GIT_COMMITTER_IDENT) ||
 trap 'rm -f "$GIT_DIR"/TAG_TMP* "$GIT_DIR"/TAG_FINALMSG "$GIT_DIR"/TAG_EDITMSG' 0
 
 if [ "$annotate" ]; then
-    if [ -z "$message" ]; then
+    if [ -z "$message_given" ]; then
         ( echo "#"
           echo "# Write a tag message"
           echo "#" ) > "$GIT_DIR"/TAG_EDITMSG
@@ -95,7 +102,7 @@ if [ "$annotate" ]; then
     grep -v '^#' <"$GIT_DIR"/TAG_EDITMSG |
     git-stripspace >"$GIT_DIR"/TAG_FINALMSG
 
-    [ -s "$GIT_DIR"/TAG_FINALMSG ] || {
+    [ -s "$GIT_DIR"/TAG_FINALMSG -o -n "$message_given" ] || {
 	echo >&2 "No tag message?"
 	exit 1
     }
-- 
1.4.2.4


-- 
 Han-Wen Nienhuys - hanwen@xs4all.nl - http://www.xs4all.nl/~hanwen
Han-Wen Nienhuys· Nov 26, 2006, 16:46 UTC · re: Han-Wen Nienhuys · lore
Han-Wen Nienhuys escreveu:
> Junio C Hamano escreveu:
>> Please follow Documentation/SubmittingPatches.
> 
> See below, hope I didn't mess up.
please add
Signed-off-by: Han-Wen Nienhuys <hanwen@xs4all.nl>
-- 
 Han-Wen Nienhuys - hanwen@xs4all.nl - http://www.xs4all.nl/~hanwen

← back to recent threads