chiark / gitweb /
tests/lib: break out t-untar and use it in t-worktree
[dgit.git] / tests / gitrepo-edit
index 27be703a64b5747973fdb70dfdffb9f4d0848c44..d4183f1e95f1dcf4a3490e6ce388bec34b12873d 100755 (executable)
@@ -12,7 +12,7 @@ case "$arg" in
 *.git.tar)     base=${arg%.tar}                        ;;
 *.git.edit)    base=${arg%.edit}                       ;;
 *.git)         base=${arg}                             ;;
-*)             fail "arg must end in .git[.tar]"       ;;
+*)             fail "arg must end in .git[.tar|.edit]" ;;
 esac
 
 tryat_pre () {
@@ -26,7 +26,6 @@ tryat_pre () {
 
 tryat_edit () {
        local b="$1"
-       local i="$2"
        if test -d "$b.edit"; then
                echo "$b.edit already exists"
                exit 0
@@ -34,9 +33,8 @@ tryat_edit () {
        if test -f "$b.tar"; then
                mkdir "$b.tmp"
                (set -e; cd "$b.tmp"; tar xf "$b.tar")
-               mv "$b.tmp/$i" "$b.edit"
+               mv "$b.tmp" "$b.edit"
                rm "$b.tar"
-               rm -rf "$b.tmp"
                echo "$b.edit ready"
                exit 0
        fi
@@ -44,13 +42,9 @@ tryat_edit () {
 
 tryat_done () {
        local b="$1"
-       local i="$2"
        if test -d "$b.edit"; then
-               mkdir "$b.tmp"
-               cp -al "$b.edit" "$b.tmp/$i"
-               (set -e; cd "$b.tmp"; tar cf "$b.tmp/tar $i")
-               mv "$b.tmp/tar" "$b.tar"
-               rm -rf "$b.tmp"
+               (set -e; cd "$b.edit"; tar cf "$b.tmp" *)
+               mv "$b.tmp" "$b.tar"
                mv "$b.edit" "$b.tmp"
                rm -rf "$b.tmp"
                echo "$b.tar regenerated"
@@ -64,13 +58,11 @@ tryat_done () {
 
 tryat () {
        local b="$1"
-       local i="${b##*/}"
-       case "$i" in *_*.git) i="${i%_*.git}.git";; esac
-       if ! test -f "$b.tar" && ! test -f "$b.edit"; then
+       if ! test -f "$b.tar" && ! test -d "$b.edit"; then
                return
        fi
-       tryat_pre "$b" "$i"
-       tryat_$mode "$b" "$i"
+       tryat_pre "$b"
+       tryat_$mode "$b"
        fail "unexpected situation in $b.*"
 }