From: Oleg Broytman Date: Mon, 26 Feb 2018 19:05:00 +0000 (+0300) Subject: Feat(status): Copy index and set GIT_INDEX_FILE to avoid touching .git X-Git-Url: https://git.phdru.name/?a=commitdiff_plain;h=646d28a9e550d907fd8353527aaaa7d87b365e76;p=git-scripts.git Feat(status): Copy index and set GIT_INDEX_FILE to avoid touching .git --- diff --git a/all-status b/all-status index 60ab248..102bf24 100755 --- a/all-status +++ b/all-status @@ -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 index d0bafa5..0000000 --- a/all-status-carefully +++ /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 index 0000000..ddab464 --- /dev/null +++ b/git-status.sh @@ -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" diff --git a/ls-status b/ls-status index f90ae41..6892f2b 100755 --- 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 index cecdfa4..0000000 --- a/ls-status-carefully +++ /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"' diff --git a/status-dirty b/status-dirty index c8a199b..b0db2a8 100755 --- a/status-dirty +++ b/status-dirty @@ -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 index 4298b09..0000000 --- a/status-dirty-carefully +++ /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