All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marc Weber <marco-oweber@gmx.de>
To: git@vger.kernel.org
Cc: u.kleine-koenig@pengutronix.de
Subject: [PATCH] topgit  tg push feature
Date: Sat, 25 Apr 2009 18:13:00 +0200	[thread overview]
Message-ID: <20090425161300.GD19142@gmx.de> (raw)

The patch should apply cleanly on 9f685cd79.
Or fetch it from branch t/tg-push at git://mawercer.de/topGit

Until now you've had two choices:

git push --all # pushing all top-bases and all other branches
or run
git push t/foo top-bases/foo # + all deps manually

tg push allows you to
a) push branch and its base, the branch you're on is used
b) push branch its deps and their bases (adding -r)

using tg push remoteA remoteB you can push to multiple remote locations.

Marc Weber

commit 2db369ff6dcfe9d5c4a9bab3eaf33c2a9b742f3d
Author: Marc Weber <marco-oweber@gmx.de>
Date:   Sat Apr 25 17:52:44 2009 +0200

    add tg-push [-r] pushing the branch and its base
    
    -r: also push tgish dependencies
    
    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..f90a7b3 100644
--- a/README
+++ b/README
@@ -480,6 +480,13 @@ tg update
 
 	TODO: tg update -a for updating all topic branches
 
+tg push
+~~~~~~~
+	git push remote branch doesn't push the base.
+        git push remote pushes all branches (and bases)
+        You use tg push [-r] to push only the current branch [ and deps] with
+        its base to a remote location.
+
 TODO: tg rename
 
 
diff --git a/tg-push.sh b/tg-push.sh
new file mode 100644
index 0000000..0f8c964
--- /dev/null
+++ b/tg-push.sh
@@ -0,0 +1,57 @@
+#!/bin/sh
+# TopGit - A different patch queue manager
+# GPLv2
+
+recurse=
+remotes=
+
+
+## Parse options
+
+while [ -n "$1" ]; do
+	arg="$1"; shift
+	case "$arg" in
+	-r)
+		recurse=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(){

+	echo "$_dep" >> "$to_be_pushed"
+	base="top-bases/$_dep"
+	if ref_exists "$base"; then
+		echo "top-bases/$_dep" >> "$to_be_pushed"
+	else
+		echo "warning, no base found $base"
+	fi
+}
+
+to_be_pushed="$(mktemp -t tg-depsfile.XXXXXX)"
+trap 'rm -rf "$to_be_pushed"' EXIT
+
+for remote in $remotes; do
+	: > $to_be_pushed # empty file
+
+	if [ -n "$recurse" ]; then
+		recurse_deps push_branch "$name"
+	fi
+	_dep="$name"
+	_dep_is_tgish=1
+	push_branch
+	echo git push $remote `cat $to_be_pushed`
+	git push $remote `cat $to_be_pushed`
+done
diff --git a/tg-push.txt b/tg-push.txt
new file mode 100644
index 0000000..de9b259
--- /dev/null
+++ b/tg-push.txt
@@ -0,0 +1,3 @@
+	push branch and base. If you also use -r all tgish dependencies
+        will be pushed as well.
+        Use tg push remoteA remoteB to push to remoteA and remoteB locations

             reply	other threads:[~2009-04-25 14:15 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-04-25 16:13 Marc Weber [this message]
2009-04-25 16:34 ` [PATCH] topgit tg push feature Marc Weber
2009-05-05  9:34   ` Marc Weber
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=20090425161300.GD19142@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.