Make it possible to run git-p4 submit from within the git repository
Signed-off-by: Simon Hausmann <hausmann@kde.org>
This commit is contained in:
parent
179caebff4
commit
9512497bcf
@ -162,7 +162,7 @@ class P4Sync(Command):
|
||||
self.dryRun = False
|
||||
self.substFile = ""
|
||||
self.firstTime = True
|
||||
self.origin = "origin"
|
||||
self.origin = ""
|
||||
self.master = ""
|
||||
self.applyAsPatch = True
|
||||
|
||||
@ -304,6 +304,42 @@ class P4Sync(Command):
|
||||
print "Perforce submit template written as %s. Please review/edit and then use p4 submit -i < %s to submit directly!" % (fileName, fileName)
|
||||
|
||||
def run(self, args):
|
||||
global gitdir
|
||||
# make gitdir absolute so we can cd out into the perforce checkout
|
||||
gitdir = os.path.abspath(gitdir)
|
||||
os.environ["GIT_DIR"] = gitdir
|
||||
depotPath = ""
|
||||
if gitBranchExists("p4"):
|
||||
[depotPath, dummy] = extractDepotPathAndChangeFromGitLog(extractLogMessageFromGitCommit("p4"))
|
||||
if len(depotPath) == 0 and gitBranchExists("origin"):
|
||||
[depotPath, dummy] = extractDepotPathAndChangeFromGitLog(extractLogMessageFromGitCommit("origin"))
|
||||
|
||||
if len(depotPath) == 0:
|
||||
print "Internal error: cannot locate perforce depot path from existing branches"
|
||||
sys.exit(128)
|
||||
|
||||
if not depotPath.endswith("/"):
|
||||
depotPath += "/"
|
||||
clientPath = p4Cmd("where %s..." % depotPath).get("path")
|
||||
if clientPath.endswith("..."):
|
||||
clientPath = clientPath[:-3]
|
||||
|
||||
if len(clientPath) == 0:
|
||||
print "Error: Cannot locate perforce checkout of %s in client view" % depotPath
|
||||
sys.exit(128)
|
||||
|
||||
print "Perforce checkout for depot path %s located at %s" % (depotPath, clientPath)
|
||||
os.chdir(clientPath)
|
||||
response = raw_input("Do you want to sync %s with p4 sync? (y/n)" % clientPath)
|
||||
if response == "y" or response == "yes":
|
||||
system("p4 sync ...")
|
||||
|
||||
if len(self.origin) == 0:
|
||||
if gitBranchExists("p4"):
|
||||
self.origin = "p4"
|
||||
else:
|
||||
self.origin = "origin"
|
||||
|
||||
if self.reset:
|
||||
self.firstTime = True
|
||||
|
||||
|
@ -51,28 +51,27 @@ Submitting
|
||||
|
||||
git-p4 has EXPERIMENTAL support for submitting changes from a git repository
|
||||
back to a Perforce depot. This requires a Perforce checkout separate to your
|
||||
git repository. This is the basic procedure:
|
||||
git repository. All it should take is calling
|
||||
|
||||
cd path/to/your/perforce/checkout
|
||||
git-p4 submit --git-dir=/path/to/your/git/repository
|
||||
git-p4 submit
|
||||
|
||||
This will create a temporary git branch, use git-rev-list to find out which git
|
||||
commits are in your current branch but not in the "origin" branch. You can
|
||||
override the name of the "origin" branch by using the --origin=mybranch option.
|
||||
The "origin" branch has to be the branch populated with git-p4's sync
|
||||
operation.
|
||||
in your git repository. This will attempt to locate the perforce checkout
|
||||
corresponding to your imported depot path. By default the changes between your
|
||||
current branch and the "p4" branch will be submitted. If there is no "p4"
|
||||
branch the "origin" branch will be used as reference instead. You can override
|
||||
this with the --origin=mysourcebranch option. The "origin" branch has to be the
|
||||
branch populated with git-p4's sync operation.
|
||||
|
||||
After some preparations (which might take a while) git-p4 enters a loop where
|
||||
it will first show a Perforce submit template and a diff of the change to
|
||||
apply. After quitting the pager with 'q' git-p4 asks for confirmation for
|
||||
issuing the "p4 submit" command and also gives you the option of editing the
|
||||
submit template using "e".
|
||||
apply in the editor. After saving and exiting the editor you will be asked whether
|
||||
you really want to submit the change or not.
|
||||
|
||||
If a submit fails you may have to "p4 resolve" and submit manually. You can
|
||||
continue importing the remaining changes with
|
||||
|
||||
git-p4 submit --git-dir=/path/to/your/git/repository --continue
|
||||
git-p4 submit --continue
|
||||
|
||||
After submitting you should sync your origin branch from Perforce using
|
||||
git-p4's sync command.
|
||||
After submitting you should sync your perforce import branch ("p4" or "origin")
|
||||
from Perforce using git-p4's sync command.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user