From: Uwe Kleine-König Date: Tue, 3 Mar 2009 10:21:56 +0000 (+0100) Subject: Merge commit 'refs/top-bases/fixes/export--b-deps' into fixes/export--b-deps X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=topgit.git;a=commitdiff_plain;h=b42b1c4979ba80da6fe9d48ab2010e5acefb47a3;hp=f1fb43163e3c495106c5bbd54fdb0f9a422a13b0 Merge commit 'refs/top-bases/fixes/export--b-deps' into fixes/export--b-deps Conflicts: tg-export.sh --- diff --git a/.topdeps b/.topdeps new file mode 100644 index 0000000..0459513 --- /dev/null +++ b/.topdeps @@ -0,0 +1 @@ +upstream diff --git a/.topmsg b/.topmsg new file mode 100644 index 0000000..213d423 --- /dev/null +++ b/.topmsg @@ -0,0 +1,13 @@ +From: martin f. krafft +Subject: [TopGit PATCH] Unify export of branches + +Currently, tg-export does things a little differently whether -b is passed or +not, when really -b should just default to the name of the current branch. + +-b can also be used with the collapse driver. + +Debian bug: #506284 +Credits: Niko Tyni for spotting the bug and sending an + initial fix. + +Signed-off-by: martin f. krafft diff --git a/tg-export.sh b/tg-export.sh index 748ca54..90f7c6a 100644 --- a/tg-export.sh +++ b/tg-export.sh @@ -54,7 +54,13 @@ if [ -z "$branches" ]; then 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)" @@ -100,7 +106,7 @@ create_tg_commit() # Produce a collapsed commit of branch NAME. collapsed_commit() { - name="$1" + local name; name="$1" rm -f "$playground/^pre" "$playground/^post" >"$playground/^body" @@ -278,17 +284,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")" ""