Browse Source

Added git-p4 rebase convenience

Signed-off-by: Simon Hausmann <simon@lst.de>
maint
Simon Hausmann 18 years ago
parent
commit
01ce1fe967
  1. 22
      contrib/fast-import/git-p4
  2. 14
      contrib/fast-import/git-p4.txt

22
contrib/fast-import/git-p4

@ -804,7 +804,11 @@ class P4Sync(Command): @@ -804,7 +804,11 @@ class P4Sync(Command):
def getLabels(self):
self.labels = {}

for output in p4CmdList("labels %s..." % self.globalPrefix):
l = p4CmdList("labels %s..." % self.globalPrefix)
if len(l) > 0:
print "Finding files belonging to labels in %s" % self.globalPrefix

for output in l:
label = output["label"]
revisions = {}
newestChange = 0
@ -1039,6 +1043,19 @@ class P4Sync(Command): @@ -1039,6 +1043,19 @@ class P4Sync(Command):

return True

class P4Rebase(Command):
def __init__(self):
Command.__init__(self)
self.options = [ ]
self.description = "Fetches the latest revision from perforce and rebases the current work (branch) against it"

def run(self, args):
sync = P4Sync()
sync.run([])
print "Rebasing the current branch"
system("git rebase p4")
return True

class HelpFormatter(optparse.IndentedHelpFormatter):
def __init__(self):
optparse.IndentedHelpFormatter.__init__(self)
@ -1061,7 +1078,8 @@ commands = { @@ -1061,7 +1078,8 @@ commands = {
"debug" : P4Debug(),
"clean-tags" : P4CleanTags(),
"submit" : P4Submit(),
"sync" : P4Sync()
"sync" : P4Sync(),
"rebase" : P4Rebase()
}

if len(sys.argv[1:]) == 0:

14
contrib/fast-import/git-p4.txt

@ -40,12 +40,24 @@ newer changes from the Perforce depot by just calling @@ -40,12 +40,24 @@ newer changes from the Perforce depot by just calling

git-p4 sync

in your git repository.
in your git repository. By default the "p4" branch is updated.

It is recommended to run 'git repack -a -d -f' from time to time when using
incremental imports to optimally combine the individual git packs that each
incremental import creates through the use of git-fast-import.

Updating
========

A common working pattern is to fetch the latest changes from the Perforce depot
and merge them with local uncommitted changes. The recommended way is to use
git's rebase mechanism to preserve linear history. git-p4 provides a convenient

git-p4 rebase

command that calls git-p4 sync followed by git rebase to rebase the current
working branch.

Submitting
==========


Loading…
Cancel
Save