Ajout script pour afficher les subrepositories avec git-remote-hg
authorHugo Villeneuve <hugo@hugovil.com>
Wed, 31 Jul 2013 15:13:32 +0000 (11:13 -0400)
committerHugo Villeneuve <hugo@hugovil.com>
Wed, 31 Jul 2013 18:09:55 +0000 (14:09 -0400)
scripts/Makefile.am
scripts/vs-hgsub [new file with mode: 0755]

index 8d297bb..8ee8ea5 100644 (file)
@@ -18,7 +18,7 @@ dist_bin_SCRIPTS = \
     setdate \
     strip-debug-symbols \
     tildes-clean \
-    vb vd vl vs \
+    vb vd vl vs vs-hgsub \
     hg-format-patch hg-update-subrepos \
     git-hg-sub-import git-hg-sub-update \
     flac2ogg flac2mp3 \
diff --git a/scripts/vs-hgsub b/scripts/vs-hgsub
new file mode 100755 (executable)
index 0000000..3182ec2
--- /dev/null
@@ -0,0 +1,88 @@
+#!/bin/bash
+
+print_usage()
+{
+    echo "$(basename $0) -- gives status of version control subrepositories."
+    echo "Usage: $(basename $0) [OPTIONS...]"
+    echo "Options:"
+    echo "  -h   display this help and exit"
+    echo "  -m   display only subrepositories with local modifications"
+}
+
+while getopts "hm" flag ;do
+    case ${flag} in
+       h)
+           print_usage
+            exit 0
+           ;;
+       m)
+           DISPLAY_LOCAL_MODS_ONLY=1
+           ;;
+       ?)
+           echo "${PROG_NAME}: Invalid option: ${OPTARG}."
+           echo "Try \`${PROG_NAME} --help' for more information."
+           exit 1
+           ;;
+    esac
+done
+shift `expr "${OPTIND}" - 1`
+
+# `$#' now represents the number of arguments after the options.
+# `$1' is the first argument, etc.
+
+if [ ! -f .hgsub ]; then
+    echo "No Mercurial subrepositories found"
+    exit 1
+fi
+
+# Read lines from .hgsub
+while read sub; do
+    # Remove CR (DOS)
+    sub="${sub//$'\r'/}"
+
+    if [ "${sub}" != "" ]; then
+        # Get subrepository URL
+        src="${sub//*= /}"
+
+        # Replace using subpaths extension content
+        src=${src/${sp_src}/${sp_dst}}
+
+        # Get subrepository local alias or label
+        dest="${sub// =*}"
+
+        # Get project ID (example: S0289)
+        id=$(echo ${sub} | sed "s/.*\(S[0-9][0-9][0-9][0-9]\).*/\1/")
+
+        # Get revision of subrepository (remove CR from .hgsubstate)
+        rev=$(cat .hgsubstate | tr -d '\r' | grep "${id}" | sed "s/ .*//")
+
+        if [ -n "${debug}" ]; then
+            echo "repo: ${src}"
+            echo "  id:     ${id}"
+            echo "  rev:    ${rev}"
+            echo "  src:    ${src}"
+            echo "  dest:   ${dest}"
+        fi
+
+        pushd "${dest}" 1> /dev/null
+
+        if vs | grep -q "nothing to commit"; then
+            LOCAL_MODS=0
+        else
+            LOCAL_MODS=1
+        fi
+
+       if [ "x${DISPLAY_LOCAL_MODS_ONLY}" != "x1" ]; then
+            # Force to display all subrepositories if -m is not specified
+            LOCAL_MODS=1
+        fi
+
+       if [ "x${LOCAL_MODS}" = "x1" ]; then
+            echo "============================"
+            echo "subrepo: ${dest}"
+            vs
+        fi
+
+        popd 1> /dev/null
+    fi
+done < .hgsub