X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=tg-export.sh;h=486ec94ba00f97e831848648ecb6c37272d5e823;hb=refs%2Fheads%2Ffixes%2Fensure-worktree;hp=37cd9cdd11f1a230a7d4c2ac08e1bc920afae160;hpb=6745b3c106485f5607d7e1e6251878d429591186;p=topgit.git diff --git a/tg-export.sh b/tg-export.sh index 37cd9cd..486ec94 100644 --- a/tg-export.sh +++ b/tg-export.sh @@ -57,22 +57,11 @@ if [ -z "$branches" ]; then fi -playground="$(mktemp -d -t tg-export.XXXXXX)" -trap 'rm -rf "$playground"' EXIT +playground="$(get_temp tg-export -d)" ## Collapse driver -# pretty_tree NAME -# Output tree ID of a cleaned-up tree without tg's artifacts. -pretty_tree() -{ - (export GIT_INDEX_FILE="$playground/^index" - git read-tree "$1" - git update-index --force-remove ".topmsg" ".topdeps" - git write-tree) -} - create_tg_commit() { name="$1" @@ -113,7 +102,7 @@ collapsed_commit() echo "TopGit-driven merge of branches:" echo cut -f 2 "$playground/$name^parents" - } | git commit-tree "$(pretty_tree "refs/top-bases/$name")" \ + } | git commit-tree "$(pretty_tree "$name" -b)" \ $(for p in $parent; do echo -p $p; done))" fi @@ -185,8 +174,8 @@ quilt() echo "Skip empty patch $_dep"; else if "$numbered"; then - number="$(printf "%04u" $(($(cat "$playground/^number" 2>/dev/null) + 1)))"; - bn="$number-$bn"; + number="$(echo $(($(cat "$playground/^number" 2>/dev/null) + 1)))"; + bn="$(printf "%04u-$bn" $number)"; echo "$number" >"$playground/^number"; fi; @@ -228,9 +217,10 @@ linearize() else retmerge=0; - git merge-recursive "$(pretty_tree "refs/top-bases/$_dep")" -- HEAD "$(pretty_tree "refs/heads/$_dep")" || retmerge="$?"; + git merge-recursive "$(pretty_tree "$_dep" -b)" -- HEAD "$(pretty_tree "refs/heads/$_dep")" || retmerge="$?"; if test "x$retmerge" != "x0"; then + git rerere; echo "fix up the merge and update the index. Don't commit!" #todo error handling sh -i