chiark / gitweb /
Merge commit 'refs/top-bases/fixes/export--b-deps' into fixes/export--b-deps fixes/export--b-deps
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 28 Dec 2011 01:52:20 +0000 (01:52 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 28 Dec 2011 01:52:20 +0000 (01:52 +0000)
1  2 
tg-export.sh

diff --combined tg-export.sh
index 5f7330b897baf54cf59922ec2939513ead231de9,486ec94ba00f97e831848648ecb6c37272d5e823..d68a6acd6d7286fabb1e59fde256dea29283d0f1
@@@ -54,31 -54,14 +54,20 @@@ if [ -z "$branches" ]; the
        name="$(git symbolic-ref HEAD | sed 's#^refs/heads/##')"
        base_rev="$(git rev-parse --short --verify "refs/top-bases/$name" 2>/dev/null)" ||
                die "not on a TopGit-controlled branch"
 +      branches="$name"
 +else
 +      name="${branches##*,}" # the last of the comma-separated items
  fi
 +# $name holds the current branch
 +# $branches holds the comma-separated list of branches
 +# $name is equal to the last of the list of branches
  
  
- 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"
  # Produce a collapsed commit of branch NAME.
  collapsed_commit()
  {
 -      name="$1"
 +      local name; name="$1"
  
        rm -f "$playground/^pre" "$playground/^post"
        >"$playground/^body"
                        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
  
@@@ -234,7 -217,7 +223,7 @@@ 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;
@@@ -287,10 -270,17 +276,10 @@@ driver(
  
  # Call driver on all the branches - this will happen
  # in topological order.
 -if [ -z "$branches" ]; then
 +echo "$branches" | tr , '\n' | while read name; do
        recurse_deps driver "$name"
        (_ret=0; _dep="$name"; _name=""; _dep_is_tgish=1; driver)
 -else
 -      echo "$branches" | tr ',' '\n' | while read _dep; do
 -              _dep_is_tgish=1
 -              $driver
 -      done
 -      name="$(echo "$branches" | sed 's/.*,//')"
 -fi
 -
 +done
  
  if [ "$driver" = "collapse" ]; then
        git update-ref "refs/heads/$output" "$(cat "$playground/$name")" ""