git-submodule: Instead of using only annotated tags, use any tags.
authorEmil Medve <Emilian.Medve@Freescale.com>
Tue, 26 Jun 2007 23:40:58 +0000 (18:40 -0500)
committerJunio C Hamano <gitster@pobox.com>
Mon, 2 Jul 2007 08:33:44 +0000 (01:33 -0700)
Some repositories might not use/have annotated tags (for example the
ones created with git-cvsimport) and git-submodule status might fail
because git-describe might fail to find a tag.  This change allows the
status of a submodule to be described/displayed relative to lightweight
tags as well.

Signed-off-by: Emil Medve <Emilian.Medve@Freescale.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-submodule.sh

index 67c78f2d3d9b867dd5e9c989aa6f9c4da1fbd301..c29e2c3c9dd0bf42cc6ac68f70aef1fc742c5207 100755 (executable)
@@ -199,6 +199,18 @@ modules_update()
        done
 }
 
+set_name_rev () {
+       revname=$( (
+               unset GIT_DIR &&
+               cd "$1" && {
+                       git-describe "$2" 2>/dev/null ||
+                       git-describe --tags "$2" 2>/dev/null ||
+                       git-describe --contains --tags "$2"
+               }
+       ) )
+       test -z "$revname" || revname=" ($revname)"
+}
+
 #
 # List all submodules, prefixed with:
 #  - submodule not initialized
@@ -221,17 +233,18 @@ modules_list()
                        say "-$sha1 $path"
                        continue;
                fi
-               revname=$(unset GIT_DIR && cd "$path" && git-describe $sha1)
+               revname=$(unset GIT_DIR && cd "$path" && git-describe --tags $sha1)
+               set_name_rev "$path" $"sha1"
                if git diff-files --quiet -- "$path"
                then
-                       say " $sha1 $path ($revname)"
+                       say " $sha1 $path$revname"
                else
                        if test -z "$cached"
                        then
                                sha1=$(unset GIT_DIR && cd "$path" && git-rev-parse --verify HEAD)
-                               revname=$(unset GIT_DIR && cd "$path" && git-describe $sha1)
+                               set_name_rev "$path" $"sha1"
                        fi
-                       say "+$sha1 $path ($revname)"
+                       say "+$sha1 $path$revname"
                fi
        done
 }