[PATCH] Add option -L to git-tag.

Subsystems: documentation, the rest

DORMANTno replies

2 messages, 2 authors, 2016-06-15 · open the first message on its own page

[PATCH] Add option -L to git-tag.

From: Matthijs Melchior <hidden>
Date: 2016-06-15 22:43:13

  This will list the selected tags and include annotations, if any.

Signed-off-by: Matthijs Melchior <redacted>
---

Version 2 of the git-tag -L patch.
  It implements better style,
   a new --pretty=n option and
   an interresting exit code.

  -Matthijs

 Documentation/git-tag.txt |    5 ++++-
 git-tag.sh                |   24 +++++++++++++++++-------
 2 files changed, 21 insertions(+), 8 deletions(-)
diff --git a/Documentation/git-tag.txt b/Documentation/git-tag.txt
index 4e3e027..441f361 100644
--- a/Documentation/git-tag.txt
+++ b/Documentation/git-tag.txt
@@ -11,7 +11,7 @@ SYNOPSIS
 [verse]
 'git-tag' [-a | -s | -u <key-id>] [-f] [-m <msg> | -F <file>]  <name> [<head>]
 'git-tag' -d <name>...
-'git-tag' -l [<pattern>]
+'git-tag' [-l | -L] [<pattern>]
 'git-tag' -v <name>
 
 DESCRIPTION
@@ -41,6 +41,9 @@ GnuPG key for signing.
 `-l <pattern>` lists tags that match the given pattern (or all
 if no pattern is given).
 
+`-L <pattern>` lists tags, including their annotations, that match
+the given pattern (or all if no pattern is given).
+
 OPTIONS
 -------
 -a::
diff --git a/git-tag.sh b/git-tag.sh
index 6f0b7a7..45c4253 100755
--- a/git-tag.sh
+++ b/git-tag.sh
@@ -1,7 +1,7 @@
 #!/bin/sh
 # Copyright (c) 2005 Linus Torvalds
 
-USAGE='-l [<pattern>] | [-a | -s | -u <key-id>] [-f | -d | -v] [-m <msg>] <tagname> [<head>]'
+USAGE='[-l | -L] [<pattern>] | [-a | -s | -u <key-id>] [-f | -d | -v] [-m <msg>] <tagname> [<head>]'
 SUBDIRECTORY_OK='Yes'
 . git-sh-setup
 
@@ -26,13 +26,23 @@ do
     -f)
 	force=1
 	;;
-    -l)
-	case "$#" in
-	1)
-		set x . ;;
-	esac
+    -l|-L)
+	TAGSONLY=true
+	[ "$1" = -L ] && TAGSONLY=false
+	[ "$#" = 1 ] && set x .
 	shift
-	git rev-parse --symbolic --tags | sort | grep "$@"
+	git rev-parse --symbolic --tags | grep "$@" |
+	    while read TAG
+	    do
+		echo "$TAG"
+		$TAGSONLY && continue
+		OBJTYPE=$(git cat-file -t "$TAG")
+		case $OBJTYPE in
+		    tag)    git cat-file $OBJTYPE "$TAG" |
+				sed '1,/^$/d;/^-----BEGIN PGP SIGNATURE-----$/Q;s/^/    /'
+			    ;;
+		esac
+	    done
 	exit $?
 	;;
     -m)
-- 
1.5.2


>From f0123e2f1c4bd8a15e8d190dc1e0c2745db60278 Mon Sep 17 00:00:00 2001
From: Matthijs Melchior <mmelchior@xs4all.nl>
Date: Sat, 2 Jun 2007 15:04:46 +0200
Subject: [PATCH] git-tag -L, version 2
	style. --pretty=n and exit code
---
 git-tag.sh |   20 +++++++++++++++-----
 1 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/git-tag.sh b/git-tag.sh
index 45c4253..dafa083 100755
--- a/git-tag.sh
+++ b/git-tag.sh
@@ -13,6 +13,7 @@ message=
 username=
 list=
 verify=
+LINES=3
 while case "$#" in 0) break ;; esac
 do
     case "$1" in
@@ -26,24 +27,33 @@ do
     -f)
 	force=1
 	;;
+    --pretty=*)
+	LINES=$(expr "$1" : '--pretty=\(.*\)')
+	;;
     -l|-L)
 	TAGSONLY=true
 	[ "$1" = -L ] && TAGSONLY=false
 	[ "$#" = 1 ] && set x .
 	shift
-	git rev-parse --symbolic --tags | grep "$@" |
+	[ "$LINES" -le 0 ] && LINES=999999
+	TAGLIST=$(git rev-parse --symbolic --tags | grep "$@")
+	RC=$?			# from grep
+	printf "%s" "$TAGLIST" |
 	    while read TAG
 	    do
 		echo "$TAG"
 		$TAGSONLY && continue
 		OBJTYPE=$(git cat-file -t "$TAG")
 		case $OBJTYPE in
-		    tag)    git cat-file $OBJTYPE "$TAG" |
-				sed '1,/^$/d;/^-----BEGIN PGP SIGNATURE-----$/Q;s/^/    /'
-			    ;;
+		tag)	git cat-file tag "$TAG" |
+			  sed -e '1,/^$/d' \
+			      -e '/^-----BEGIN PGP SIGNATURE-----$/Q' \
+			      -e 's/^/    /' |
+			  sed -e "${LINES}q"
+			;;
 		esac
 	    done
-	exit $?
+	exit $RC
 	;;
     -m)
     	annotate=1
-- 
1.5.2

Re: [PATCH] Add option -L to git-tag.

From: Frank Lichtenheld <hidden>
Date: 2016-06-15 22:43:13

On Sat, Jun 02, 2007 at 03:10:48PM +0200, Matthijs Melchior wrote:
+`-L <pattern>` lists tags, including their annotations, that match
+the given pattern (or all if no pattern is given).
From the descriptions it is not clear to me if the pattern is applied to
the tag names, the annotations or both. Maybe one could reorder that
sentence to make it less confusing?

Gruesse,
-- 
Frank Lichtenheld [off-list ref]
www: http://www.djpig.de/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help