From: Junio C Hamano Date: Fri, 26 Apr 2013 23:30:40 +0000 (-0700) Subject: git-remote-testgit: build it to run under $SHELL_PATH X-Git-Tag: v1.8.4-rc0~256^2 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/709a957d9493cbdd457d02bfada067c9b3ccc253?ds=inline;hp=--cc git-remote-testgit: build it to run under $SHELL_PATH Just like all the other shell scripts, replace the shebang line to make sure it runs under the shell the user specified. As this no longer depends on bashisms, t5801 does not have to say bash must be available somewhere on the system. Signed-off-by: Junio C Hamano --- 709a957d9493cbdd457d02bfada067c9b3ccc253 diff --git a/.gitignore b/.gitignore index 6669bf0c6c..10aee94760 100644 --- a/.gitignore +++ b/.gitignore @@ -125,6 +125,7 @@ /git-remote-ftps /git-remote-fd /git-remote-ext +/git-remote-testgit /git-remote-testpy /git-remote-testsvn /git-repack diff --git a/Makefile b/Makefile index 0f931a2030..5f424a7e19 100644 --- a/Makefile +++ b/Makefile @@ -460,6 +460,7 @@ SCRIPT_SH += git-mergetool.sh SCRIPT_SH += git-pull.sh SCRIPT_SH += git-quiltimport.sh SCRIPT_SH += git-rebase.sh +SCRIPT_SH += git-remote-testgit.sh SCRIPT_SH += git-repack.sh SCRIPT_SH += git-request-pull.sh SCRIPT_SH += git-stash.sh diff --git a/git-remote-testgit b/git-remote-testgit deleted file mode 100755 index b5289493e2..0000000000 --- a/git-remote-testgit +++ /dev/null @@ -1,115 +0,0 @@ -#!/bin/sh -# Copyright (c) 2012 Felipe Contreras - -alias=$1 -url=$2 - -dir="$GIT_DIR/testgit/$alias" -prefix="refs/testgit/$alias" - -default_refspec="refs/heads/*:${prefix}/heads/*" - -refspec="${GIT_REMOTE_TESTGIT_REFSPEC-$default_refspec}" - -test -z "$refspec" && prefix="refs" - -export GIT_DIR="$url/.git" - -mkdir -p "$dir" - -if test -z "$GIT_REMOTE_TESTGIT_NO_MARKS" -then - gitmarks="$dir/git.marks" - testgitmarks="$dir/testgit.marks" - test -e "$gitmarks" || >"$gitmarks" - test -e "$testgitmarks" || >"$testgitmarks" -fi - -while read line -do - case $line in - capabilities) - echo 'import' - echo 'export' - test -n "$refspec" && echo "refspec $refspec" - if test -n "$gitmarks" - then - echo "*import-marks $gitmarks" - echo "*export-marks $gitmarks" - fi - echo - ;; - list) - git for-each-ref --format='? %(refname)' 'refs/heads/' - head=$(git symbolic-ref HEAD) - echo "@$head HEAD" - echo - ;; - import*) - # read all import lines - while true - do - ref="${line#* }" - refs="$refs $ref" - read line - test "${line%% *}" != "import" && break - done - - if test -n "$gitmarks" - then - echo "feature import-marks=$gitmarks" - echo "feature export-marks=$gitmarks" - fi - - if test -n "$GIT_REMOTE_TESTGIT_FAILURE" - then - echo "feature done" - exit 1 - fi - - echo "feature done" - git fast-export \ - ${testgitmarks:+"--import-marks=$testgitmarks"} \ - ${testgitmarks:+"--export-marks=$testgitmarks"} \ - $refs | - sed -e "s#refs/heads/#${prefix}/heads/#g" - echo "done" - ;; - export) - if test -n "$GIT_REMOTE_TESTGIT_FAILURE" - then - # consume input so fast-export doesn't get SIGPIPE; - # git would also notice that case, but we want - # to make sure we are exercising the later - # error checks - while read line; do - test "done" = "$line" && break - done - exit 1 - fi - - before=$(git for-each-ref --format=' %(refname) %(objectname) ') - - git fast-import \ - ${testgitmarks:+"--import-marks=$testgitmarks"} \ - ${testgitmarks:+"--export-marks=$testgitmarks"} \ - --quiet - - # figure out which refs were updated - git for-each-ref --format='%(refname) %(objectname)' | - while read ref a - do - case "$before" in - *" $ref $a "*) - continue ;; # unchanged - esac - echo "ok $ref" - done - - echo - ;; - '') - exit - ;; - esac -done diff --git a/git-remote-testgit.sh b/git-remote-testgit.sh new file mode 100755 index 0000000000..b5289493e2 --- /dev/null +++ b/git-remote-testgit.sh @@ -0,0 +1,115 @@ +#!/bin/sh +# Copyright (c) 2012 Felipe Contreras + +alias=$1 +url=$2 + +dir="$GIT_DIR/testgit/$alias" +prefix="refs/testgit/$alias" + +default_refspec="refs/heads/*:${prefix}/heads/*" + +refspec="${GIT_REMOTE_TESTGIT_REFSPEC-$default_refspec}" + +test -z "$refspec" && prefix="refs" + +export GIT_DIR="$url/.git" + +mkdir -p "$dir" + +if test -z "$GIT_REMOTE_TESTGIT_NO_MARKS" +then + gitmarks="$dir/git.marks" + testgitmarks="$dir/testgit.marks" + test -e "$gitmarks" || >"$gitmarks" + test -e "$testgitmarks" || >"$testgitmarks" +fi + +while read line +do + case $line in + capabilities) + echo 'import' + echo 'export' + test -n "$refspec" && echo "refspec $refspec" + if test -n "$gitmarks" + then + echo "*import-marks $gitmarks" + echo "*export-marks $gitmarks" + fi + echo + ;; + list) + git for-each-ref --format='? %(refname)' 'refs/heads/' + head=$(git symbolic-ref HEAD) + echo "@$head HEAD" + echo + ;; + import*) + # read all import lines + while true + do + ref="${line#* }" + refs="$refs $ref" + read line + test "${line%% *}" != "import" && break + done + + if test -n "$gitmarks" + then + echo "feature import-marks=$gitmarks" + echo "feature export-marks=$gitmarks" + fi + + if test -n "$GIT_REMOTE_TESTGIT_FAILURE" + then + echo "feature done" + exit 1 + fi + + echo "feature done" + git fast-export \ + ${testgitmarks:+"--import-marks=$testgitmarks"} \ + ${testgitmarks:+"--export-marks=$testgitmarks"} \ + $refs | + sed -e "s#refs/heads/#${prefix}/heads/#g" + echo "done" + ;; + export) + if test -n "$GIT_REMOTE_TESTGIT_FAILURE" + then + # consume input so fast-export doesn't get SIGPIPE; + # git would also notice that case, but we want + # to make sure we are exercising the later + # error checks + while read line; do + test "done" = "$line" && break + done + exit 1 + fi + + before=$(git for-each-ref --format=' %(refname) %(objectname) ') + + git fast-import \ + ${testgitmarks:+"--import-marks=$testgitmarks"} \ + ${testgitmarks:+"--export-marks=$testgitmarks"} \ + --quiet + + # figure out which refs were updated + git for-each-ref --format='%(refname) %(objectname)' | + while read ref a + do + case "$before" in + *" $ref $a "*) + continue ;; # unchanged + esac + echo "ok $ref" + done + + echo + ;; + '') + exit + ;; + esac +done diff --git a/t/t5801-remote-helpers.sh b/t/t5801-remote-helpers.sh index c956abd865..0a83db8875 100755 --- a/t/t5801-remote-helpers.sh +++ b/t/t5801-remote-helpers.sh @@ -7,11 +7,6 @@ test_description='Test remote-helper import and export commands' . ./test-lib.sh -if ! type "${BASH-bash}" >/dev/null 2>&1; then - skip_all='skipping remote-testgit tests, bash not available' - test_done -fi - compare_refs() { git --git-dir="$1/.git" rev-parse --verify $2 >expect && git --git-dir="$3/.git" rev-parse --verify $4 >actual &&