From 21ca17d3cd79e4f9887a51dff672cc0a47e11ae9 Mon Sep 17 00:00:00 2001 From: Jesse Keating Date: Wed, 9 Feb 2011 15:39:10 -0700 Subject: Add a --rebase and --no-rebase option to pull I decided to emulate git here and not default to a rebase. --- src/fedpkg.py | 19 +++++++++++++++++-- src/pyfedpkg/__init__.py | 14 ++++++++++++-- 2 files changed, 29 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/fedpkg.py b/src/fedpkg.py index 7c38249..56f3be2 100755 --- a/src/fedpkg.py +++ b/src/fedpkg.py @@ -639,7 +639,7 @@ def prep(args): def pull(args): try: - pyfedpkg.pull(path=args.path) + pyfedpkg.pull(path=args.path, rebase=args.rebase, norebase=args.no_rebase) except pyfedpkg.FedpkgError, e: log.error('Could not pull: %s' % e) sys.exit(1) @@ -1227,7 +1227,22 @@ defined, packages will be built sequentially.""") # Pull stuff parser_pull = subparsers.add_parser('pull', help = 'Pull changes from remote ' - 'repository and update working copy') + 'repository and update working copy.', + description = 'This command uses git \ + to fetch remote changes and apply \ + them to the current working copy. A \ + rebase option is available which can \ + be used to avoid merges.', + epilog = 'See git pull --help for \ + more details') + parser_pull.add_argument('--rebase', action = 'store_true', + help = 'Rebase the locally committed changes on \ + top of the remote changes after fetching. This \ + can avoid a merge commit, but does rewrite local \ + history.') + parser_pull.add_argument('--no-rebase', action = 'store_true', + help = 'Do not rebase, override .git settings to \ + automatically rebase') parser_pull.set_defaults(command = pull) diff --git a/src/pyfedpkg/__init__.py b/src/pyfedpkg/__init__.py index 8696026..dcea285 100644 --- a/src/pyfedpkg/__init__.py +++ b/src/pyfedpkg/__init__.py @@ -710,12 +710,22 @@ def new(path=None): log.debug('Diffing from tag %s' % tag) return repo.git.diff('-M', tag) -def pull(path=None): - """Pull changes from the main repository using optional path""" +def pull(path=None, rebase=False, norebase=False): + """Pull changes from the main repository using optional path + + Optionally rebase current branch on top of upstream branch + + Optionally override .git setting to always rebase + + """ if not path: path = os.getcwd() cmd = ['git', 'pull'] + if rebase: + cmd.append('--rebase') + if norebase: + cmd.append('--no-rebase') _run_command(cmd, cwd=path) return -- cgit