*.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 () {
tryat_edit () {
local b="$1"
- local i="$2"
if test -d "$b.edit"; then
echo "$b.edit already exists"
exit 0
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
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"
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.*"
}