]> git.phdru.name Git - git-scripts.git/commitdiff
Feat(status): Copy index and set GIT_INDEX_FILE to avoid touching .git
authorOleg Broytman <phd@phdru.name>
Mon, 26 Feb 2018 19:05:00 +0000 (22:05 +0300)
committerOleg Broytman <phd@phdru.name>
Mon, 26 Feb 2018 19:11:46 +0000 (22:11 +0300)
all-status
all-status-carefully [deleted file]
git-status.sh [new file with mode: 0755]
ls-status
ls-status-carefully [deleted file]
status-dirty
status-dirty-carefully [deleted file]

index 60ab248403f596b5666728ee38cf22dfd73f874d..102bf24f4bfe5b884bf8178c3e3cae2c07bb82b1 100755 (executable)
@@ -1,6 +1,9 @@
 #! /bin/sh
 
-prog_dir=`dirname "$0"`
-"$prog_dir"/do-all \
+cd "`dirname \"$0\"`" &&
+prog_dir="`pwd`" &&
+export prog_dir
+
+exec "$prog_dir"/do-all \
    'test "$g" = "$d/.git" || continue; cd "$d" &&' \
-   'echo "----- $d -----" && git status --short --branch || exit 1'
+   'echo "----- $d -----" && "$prog_dir"/git-status.sh --short --branch || exit 1'
diff --git a/all-status-carefully b/all-status-carefully
deleted file mode 100755 (executable)
index d0bafa5..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#! /bin/sh
-
-STMP="$HOME"/tmp/all-status-carefully.tmp
-export STMP
-trap 'exec rm -rf "$STMP"' 0 HUP INT QUIT TERM
-
-cd "`dirname \"$0\"`" && prog_dir="`pwd`" &&
-rm -rf "$STMP" && mkdir "$STMP" &&
-
-"$prog_dir"/do-all \
-   'test "$g" = "$d/.git" || continue;' \
-   'rsync -aW --del --protocol=28 "$d" "$STMP" && cd "$STMP/$b" &&' \
-   '( test -n "`git status --short`" ||' \
-   'git status --branch --short | grep -q "ahead\|behind" ) &&' \
-   'echo "----- $d -----" && git status --short --branch'
diff --git a/git-status.sh b/git-status.sh
new file mode 100755 (executable)
index 0000000..ddab464
--- /dev/null
@@ -0,0 +1,19 @@
+#! /bin/sh
+
+STMP="$HOME"/tmp/git-status.tmp
+export STMP
+trap 'exec rm -rf "$STMP"' 0 HUP INT QUIT TERM
+rm -rf "$STMP" && mkdir "$STMP" &&
+
+GIT_INDEX_FILE="$STMP"/index &&
+export GIT_INDEX_FILE &&
+
+if [ -d .git -a -f .git/index ]; then
+   cp -p .git/index $GIT_INDEX_FILE
+else
+   echo "$0: `pwd` is not a git directory" >&2
+   exit 1
+fi &&
+
+git status "$@" &&
+exec rm -rf "$STMP"
index f90ae41df0337f3f172376bfdeb2e7967d666330..6892f2bdb05a6690916084ccace547bdf755b1ba 100755 (executable)
--- a/ls-status
+++ b/ls-status
@@ -1,5 +1,9 @@
 #! /bin/sh
 
-exec "`dirname \"$0\"`"/do-all \
+cd "`dirname \"$0\"`" &&
+prog_dir="`pwd`" &&
+export prog_dir
+
+exec "$prog_dir"/do-all \
    'test "$g" = "$d/.git" || continue; cd "$d" &&' \
-   'test -n "`git status --short`" && echo "$d"'
+   'test -n "`"$prog_dir"/git-status.sh --short`" && echo "$d"'
diff --git a/ls-status-carefully b/ls-status-carefully
deleted file mode 100755 (executable)
index cecdfa4..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#! /bin/sh
-
-LSTMP="$HOME"/tmp/ls-status-carefully.tmp
-export LSTMP
-trap 'exec rm -rf "$LSTMP"' 0 HUP INT QUIT TERM
-
-cd "`dirname \"$0\"`" && prog_dir="`pwd`" &&
-rm -rf "$LSTMP" && mkdir "$LSTMP" &&
-
-"$prog_dir"/do-all \
-   'test "$g" = "$d/.git" || continue;' \
-   'rsync -aW --del --protocol=28 "$d" "$LSTMP" && cd "$LSTMP/$b" &&' \
-   'test -n "`git status --short`" && echo "$d"'
index c8a199b81161f001a8484491bfe556f5e66ea710..b0db2a8ae054bc1e838521cc5cdbc8a7fbfea0af 100755 (executable)
@@ -4,5 +4,5 @@ prog_dir=`dirname "$0"`
 for d in `"$prog_dir"/ls-dirty`
 do
    echo "----- $d -----" && cd "$d" &&
-   git status || exit 1
+   "$prog_dir"/git-status.sh || exit 1
 done
diff --git a/status-dirty-carefully b/status-dirty-carefully
deleted file mode 100755 (executable)
index 4298b09..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#! /bin/sh
-
-STMP="$HOME"/tmp/status-dirty-carefully.tmp
-export STMP
-trap 'exec rm -rf "$STMP"' 0 HUP INT QUIT TERM
-
-cd "`dirname \"$0\"`" && prog_dir="`pwd`" &&
-rm -rf "$STMP" && mkdir "$STMP" &&
-
-for d in `"$prog_dir"/ls-dirty`
-do
-   echo "----- $d -----" && rsync -aW --del --protocol=28 "$d" "$STMP" &&
-   cd "$STMP/`basename \"$d\"`" && git status --branch
-done