2 # TopGit - A different patch queue manager
19 tgish_deps_only
=true
;;
21 echo "Usage: tg push [--dry-run] [--no-deps] [--tgish-only] [-r remote] branch*"
28 branches
="$branches $arg";;
32 if [ -z "$remote" ]; then
36 if [ -z "$remote" ]; then
37 die
"no remote location given. Either use -r remote argument or set topgit.remote"
40 if [ -z "$branches" ]; then
41 branches
="$(git symbolic-ref HEAD | sed 's#^refs/heads/##')"
44 for name
in $branches; do
45 ref_exists
"$name" || die
"detached HEAD? Can't push $name"
48 _listfile
="$(mktemp -t tg-push-listfile.XXXXXX)"
49 trap "rm -f \"$_listfile\"" 0
53 # if so desired omit non tgish deps
54 $tgish_deps_only && [ -z "$_dep_is_tgish" ] && return 0
56 echo "$_dep" >> "$_listfile"
57 [ -z "$_dep_is_tgish" ] ||
58 echo "top-bases/$_dep" >> "$_listfile"
61 for name
in $branches; do
63 # re-use push_branch, which expects some pre-defined variables
66 ref_exists
"top-bases/$_dep" ||
70 # deps but only if branch is tgish
71 $recurse_deps && [ -n "$_dep_is_tgish" ] &&
72 no_remotes
=1 recurse_deps push_branch
"$name"
74 # remove multiple occurrences of the same branch
75 sort -u "$_listfile" |
xargs git push
$dry_run "$remote"