summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/fedpkg.py19
-rw-r--r--src/pyfedpkg/__init__.py14
2 files changed, 29 insertions, 4 deletions
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