From: Marc Weber <marco-oweber@gmx.de>
To: git@vger.kernel.org
Cc: u.kleine-koenig@pengutronix.de
Subject: Re: [PATCH] topgit tg push feature
Date: Tue, 5 May 2009 11:34:48 +0200 [thread overview]
Message-ID: <20090505093448.GC16524@gmx.de> (raw)
In-Reply-To: <20090425163447.GE19142@gmx.de>
updated version is availible:
changes:
* push deps (even non-tgish) by default. You can switch off both by
--no-deps and --only-tgish
* fixed remote check
* adding --dry-run
* no longer using temp file.
The patch should apply cleanly on 9f685cd79.
You can also get it by pulling from branch t/tg-push at git://mawercer.de/topGit
commit 30f6a7bc1d656249643f0c59e3095620990351d8
Author: Marc Weber <marco-oweber@gmx.de>
Date: Tue May 5 11:31:53 2009 +0200
t/tg-push
add tg-push pushing the branch, its deps and their bases
Usage: tg push [(--no-deps | --tgish-only)] remote*
Signed-off-by: Marc Weber <marco-oweber@gmx.de>
diff --git a/.gitignore b/.gitignore
index eb56446..2f6d991 100644
--- a/.gitignore
+++ b/.gitignore
@@ -21,6 +21,8 @@
/tg-import.txt
/tg-remote
/tg-remote.txt
+/tg-push
+/tg-push.txt
/tg
.*.swp
diff --git a/README b/README
index d2f095d..290e883 100644
--- a/README
+++ b/README
@@ -480,6 +480,19 @@ tg update
TODO: tg update -a for updating all topic branches
+tg push
+~~~~~~~
+ Usage: tg push [(--no-deps | --tgish-only)] remote*
+
+ $git push remote branch # this doesn't push the base.
+ $git push remote # pushes all branches (and bases)
+ You use
+
+ $tg push remote
+ to push the current branch, its deps and their both tgish
+ and non-tgish deps. You may add --no-deps and or --tgish-only
+ to change this default behaviour
+
TODO: tg rename
diff --git a/tg-push.sh b/tg-push.sh
new file mode 100644
index 0000000..e79c19f
--- /dev/null
+++ b/tg-push.sh
@@ -0,0 +1,68 @@
+#!/bin/sh
+# TopGit - A different patch queue manager
+# GPLv2
+
+remotes=
+
+## Parse options see README
+
+recurse_deps=1
+tgish_deps_only=
+
+while [ -n "$1" ]; do
+ arg="$1"; shift
+ case "$arg" in
+ --no-deps)
+ recurse_deps=;;
+ --dry-run)
+ dry_run=1;;
+ --tgish-only)
+ tgish_deps_only=1;;
+ *)
+ remotes="$remotes $arg";;
+ esac
+done
+
+if [ -z "$remotes" ]; then
+ remotes="$(git config topgit.remote 2>/dev/null)"
+fi
+
+if [ -z "$remotes" ]; then
+ die "no remote location given. Either add a remote as additional argument or set topgit.remote"
+fi
+
+name="$(git symbolic-ref HEAD | sed 's#^refs/heads/##')"
+ref_exists "$name" || die "detached HEAD? Can't push that"
+
+push_branch(){
+ # don't push remotes, don't push non tg branches
+ [ -n "${_dep##*/remotes/*}" ] || [ -n "$_dep_is_tgish" ] || return 0
+ # if so desired omit non tgish deps
+ [ -z "$tgish_deps_only" ] || [ -n "$_dep_is_tgish" ] || return 0
+
+ echo "$_dep"
+ local base="top-bases/$_dep"
+ if ref_exists "$base"; then
+ echo "top-bases/$_dep"
+ else
+ echo "warning, no base found $base" 1>&2
+ fi
+}
+
+for remote in $remotes; do
+ list="$(
+ # deps
+ if [ -n "$recurse_deps" ]; then
+ recurse_deps push_branch "$name"
+ fi
+ # current branch
+ _dep="$name"
+ _dep_is_tgish=1
+ )"
+ echo "pushing:"; echo $list
+ if [ -n "$dry_run" ]; then
+ echo git push $remote $list
+ else
+ git push $remote $list
+ fi
+done
next prev parent reply other threads:[~2009-05-05 9:35 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-04-25 16:13 [PATCH] topgit tg push feature Marc Weber
2009-04-25 16:34 ` Marc Weber
2009-05-05 9:34 ` Marc Weber [this message]
2009-05-07 4:59 ` Marc Weber
2009-05-07 5:45 ` Bert Wesarg
2009-05-07 8:43 ` Uwe Kleine-König
2009-05-07 9:50 ` Bert Wesarg
2009-05-09 10:36 ` martin f krafft
2009-05-09 19:09 ` Marc Weber
2009-05-11 3:28 ` Marc Weber
2009-05-11 7:25 ` martin f krafft
2009-05-11 7:47 ` martin f krafft
2009-05-11 19:55 ` Uwe Kleine-König
2009-05-11 21:06 ` Marc Weber
2009-05-11 21:39 ` martin f krafft
2009-05-12 5:13 ` Uwe Kleine-König
2009-05-12 6:22 ` Bert Wesarg
2009-05-12 7:54 ` Marc Weber
2009-05-12 8:55 ` Bert Wesarg
2009-05-12 9:02 ` Uwe Kleine-König
2009-05-13 10:04 ` [PATCH] tg-remote: don't add push specs but warn about existing ones Uwe Kleine-König
2009-05-13 11:42 ` martin f krafft
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20090505093448.GC16524@gmx.de \
--to=marco-oweber@gmx.de \
--cc=git@vger.kernel.org \
--cc=u.kleine-koenig@pengutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.