chiark / gitweb /
Merge commit 'refs/top-bases/i/basis-merge' into i/basis-merge
[topgit.git] / tg-push.sh
index 8e1b43fdea767f1c2a3e1b90ebfc2ed4343bdbbe..a928fba8e9e93a522f966004bea28c0c6fc1fe07 100644 (file)
@@ -45,14 +45,17 @@ for name in $branches; do
        ref_exists "$name" || die "detached HEAD? Can't push $name"
 done
 
-_listfile="$(mktemp -t tg-push-listfile.XXXXXX)"
-trap "rm -f \"$_listfile\"" 0
+_listfile="$(get_temp tg-push-listfile)"
 
 push_branch()
 {
        # if so desired omit non tgish deps
        $tgish_deps_only && [ -z "$_dep_is_tgish" ] && return 0
 
+       # filter out plain SHA1s.  These don't need to be pushed explicitly as
+       # the patches that depend on the sha1 have it already in their ancestry.
+       is_sha1 "$_dep" && return 0
+
        echo "$_dep" >> "$_listfile"
        [ -z "$_dep_is_tgish" ] ||
                echo "top-bases/$_dep" >> "$_listfile"
@@ -67,8 +70,8 @@ for name in $branches; do
                _dep_is_tgish=
        push_branch "$name"
 
-       # deps
-       $recurse_deps &&
+       # deps but only if branch is tgish
+       $recurse_deps && [ -n "$_dep_is_tgish" ] &&
                no_remotes=1 recurse_deps push_branch "$name"
 
        # remove multiple occurrences of the same branch