summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuido Günther <agx@sigxcpu.org>2011-01-10 15:53:52 +0100
committerGuido Günther <agx@sigxcpu.org>2011-01-11 07:00:17 +0100
commit05d9ecb7e4eaf6cfc8942c5c47b6f9dde2e99459 (patch)
treeb1814c8b06ce7b170053aed958b2e90312006928
parentb9aae056a67031db81376891c57663803e990ddc (diff)
downloadgit-buildpackage-05d9ecb7e4eaf6cfc8942c5c47b6f9dde2e99459.tar.gz
git-buildpackage-05d9ecb7e4eaf6cfc8942c5c47b6f9dde2e99459.tar.bz2
git-buildpackage-05d9ecb7e4eaf6cfc8942c5c47b6f9dde2e99459.zip
gbp-create-remote-repo: allow to set up remote branch tracking
-rwxr-xr-xexamples/gbp-create-remote-repo51
1 files changed, 33 insertions, 18 deletions
diff --git a/examples/gbp-create-remote-repo b/examples/gbp-create-remote-repo
index 6cbedac5..6df67ae9 100755
--- a/examples/gbp-create-remote-repo
+++ b/examples/gbp-create-remote-repo
@@ -19,17 +19,19 @@
# Based on the aa-create-git-repo and dom-new-git-repo shell scripts
"""Create a remote repo based on the current one"""
-# TODO: allow to add hoonks by default
+# TODO: allow to add hooks by default
import sys
import os, os.path
import urlparse
import subprocess
import tty, termios
-from gbp.command_wrappers import ( CommandExecFailed, PristineTar, GitCommand)
+from gbp.command_wrappers import (CommandExecFailed, PristineTar, GitCommand,
+ GitFetch)
from gbp.config import (GbpOptionParser, GbpOptionGroup)
from gbp.errors import GbpError
from gbp.git import (GitRepositoryError, GitRepository)
+import gbp.log
def print_config(remote, branches):
print """[remote "origin"]
@@ -74,8 +76,22 @@ def read_yn():
return False
+def setup_branch_tracking(remote, branches):
+ gitRemoteAdd = GitCommand("remote", ["add"])
+ gitRemoteAdd(["origin", remote['url']])
+ GitFetch()()
+ gitTrackRemote = GitCommand("branch", ["--set-upstream"])
+ for branch in branches:
+ gitTrackRemote(["%s" % branch, "origin/%s" % branch])
+
+
+def push_branches(remote, branches):
+ gitPush = GitCommand("push")
+ gitPush([remote['url']] + branches)
+ gitPush([remote['url'], '--tags'])
+
+
def main(argv):
- changelog = 'debian/changelog'
retval = 0
parser = GbpOptionParser(command=os.path.basename(argv[0]), prefix='',
@@ -86,18 +102,19 @@ def main(argv):
branch_group.add_config_file_option(option_name="upstream-branch", dest="upstream_branch")
branch_group.add_config_file_option(option_name="debian-branch", dest="debian_branch")
branch_group.add_boolean_config_file_option(option_name="pristine-tar", dest="pristine_tar")
+ branch_group.add_option("--track", dest='track', action="store_true", default=False,
+ help="Set up tracking for remote branches")
parser.add_option("-v", "--verbose", action="store_true", dest="verbose", default=False,
help="verbose command execution")
+ parser.add_config_file_option(option_name="color", dest="color", type='tristate')
(options, args) = parser.parse_args(argv)
-
- if options.verbose:
- Command.verbose = True
+ gbp.log.setup(options.color, options.verbose)
try:
repo = GitRepository(os.path.curdir)
except GitRepositoryError:
- print >>sys.stderr, "%s is not a git repository" % (os.path.abspath('.'))
+ gbp.log.err("%s is not a git repository" % (os.path.abspath('.')))
return 1
try:
@@ -114,7 +131,7 @@ def main(argv):
pkg = os.path.splitext(pkg)[0]
remote = parse_remote(options.remote_url, pkg)
- print "Shall I create a repository for '%(pkg)s' at '%(url)s' now? (y/n)?" % remote
+ gbp.log.info("Shall I create a repository for '%(pkg)s' at '%(url)s' now? (y/n)?" % remote)
if not read_yn():
raise GbpError, "Aborted."
@@ -143,21 +160,19 @@ EOF""" % remote
if p2.returncode:
raise GbpError, "Error creating remote repository"
- # Push branches
- gitPush = GitCommand("push")
- gitPush([remote['url']] + branches)
- gitPush([remote['url'], '--tags'])
-
- # FIXME: option to add to .git/config by default
- print "\nYou can now add:"
- print_config(remote, branches)
- print "\nto your .git/config to 'gbp-pull' and 'git push' in the future."
+ push_branches(remote, branches)
+ if options.track:
+ setup_branch_tracking(remote, branches)
+ else:
+ gbp.log.info("You can now add:")
+ print_config(remote, branches)
+ gbp.log.info("to your .git/config to 'gbp-pull' and 'git push' in the future.")
except CommandExecFailed:
retval = 1
except GbpError, err:
if len(err.__str__()):
- print >>sys.stderr, err
+ gbp.log.err(err)
retval = 1
return retval