mirror of
https://github.com/git/git.git
synced 2024-11-24 02:17:02 +08:00
git-p4: add option to disable syncing of p4/master with p4
Add an option to the git-p4 submit command to disable syncing with Perforce. This is useful for the case where a git-p4 mirror has been setup on a server somewhere, running from (e.g.) cron, and developers then clone from this. Having the local cloned copy also sync from Perforce just isn't useful. Signed-off-by: Luke Diamand <luke@diamand.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
3b3477ea5a
commit
b9d34db9a2
@ -344,6 +344,11 @@ These options can be used to modify 'git p4 submit' behavior.
|
|||||||
Disable the automatic rebase after all commits have been successfully
|
Disable the automatic rebase after all commits have been successfully
|
||||||
submitted. Can also be set with git-p4.disableRebase.
|
submitted. Can also be set with git-p4.disableRebase.
|
||||||
|
|
||||||
|
--disable-p4sync::
|
||||||
|
Disable the automatic sync of p4/master from Perforce after commits have
|
||||||
|
been submitted. Implies --disable-rebase. Can also be set with
|
||||||
|
git-p4.disableP4Sync. Sync with origin/master still goes ahead if possible.
|
||||||
|
|
||||||
Rebase options
|
Rebase options
|
||||||
~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~
|
||||||
These options can be used to modify 'git p4 rebase' behavior.
|
These options can be used to modify 'git p4 rebase' behavior.
|
||||||
@ -661,6 +666,9 @@ git-p4.conflict::
|
|||||||
git-p4.disableRebase::
|
git-p4.disableRebase::
|
||||||
Do not rebase the tree against p4/master following a submit.
|
Do not rebase the tree against p4/master following a submit.
|
||||||
|
|
||||||
|
git-p4.disableP4Sync::
|
||||||
|
Do not sync p4/master with Perforce following a submit. Implies git-p4.disableRebase.
|
||||||
|
|
||||||
IMPLEMENTATION DETAILS
|
IMPLEMENTATION DETAILS
|
||||||
----------------------
|
----------------------
|
||||||
* Changesets from p4 are imported using Git fast-import.
|
* Changesets from p4 are imported using Git fast-import.
|
||||||
|
31
git-p4.py
31
git-p4.py
@ -1357,7 +1357,9 @@ class P4Submit(Command, P4UserMap):
|
|||||||
help="submit only the specified commit(s), one commit or xxx..xxx"),
|
help="submit only the specified commit(s), one commit or xxx..xxx"),
|
||||||
optparse.make_option("--disable-rebase", dest="disable_rebase", action="store_true",
|
optparse.make_option("--disable-rebase", dest="disable_rebase", action="store_true",
|
||||||
help="Disable rebase after submit is completed. Can be useful if you "
|
help="Disable rebase after submit is completed. Can be useful if you "
|
||||||
"work from a local git branch that is not master")
|
"work from a local git branch that is not master"),
|
||||||
|
optparse.make_option("--disable-p4sync", dest="disable_p4sync", action="store_true",
|
||||||
|
help="Skip Perforce sync of p4/master after submit or shelve"),
|
||||||
]
|
]
|
||||||
self.description = "Submit changes from git to the perforce depot."
|
self.description = "Submit changes from git to the perforce depot."
|
||||||
self.usage += " [name of git branch to submit into perforce depot]"
|
self.usage += " [name of git branch to submit into perforce depot]"
|
||||||
@ -1369,6 +1371,7 @@ class P4Submit(Command, P4UserMap):
|
|||||||
self.update_shelve = list()
|
self.update_shelve = list()
|
||||||
self.commit = ""
|
self.commit = ""
|
||||||
self.disable_rebase = gitConfigBool("git-p4.disableRebase")
|
self.disable_rebase = gitConfigBool("git-p4.disableRebase")
|
||||||
|
self.disable_p4sync = gitConfigBool("git-p4.disableP4Sync")
|
||||||
self.prepare_p4_only = False
|
self.prepare_p4_only = False
|
||||||
self.conflict_behavior = None
|
self.conflict_behavior = None
|
||||||
self.isWindows = (platform.system() == "Windows")
|
self.isWindows = (platform.system() == "Windows")
|
||||||
@ -2229,11 +2232,14 @@ class P4Submit(Command, P4UserMap):
|
|||||||
sync = P4Sync()
|
sync = P4Sync()
|
||||||
if self.branch:
|
if self.branch:
|
||||||
sync.branch = self.branch
|
sync.branch = self.branch
|
||||||
sync.run([])
|
if self.disable_p4sync:
|
||||||
|
sync.sync_origin_only()
|
||||||
|
else:
|
||||||
|
sync.run([])
|
||||||
|
|
||||||
if self.disable_rebase is False:
|
if not self.disable_rebase:
|
||||||
rebase = P4Rebase()
|
rebase = P4Rebase()
|
||||||
rebase.rebase()
|
rebase.rebase()
|
||||||
|
|
||||||
else:
|
else:
|
||||||
if len(applied) == 0:
|
if len(applied) == 0:
|
||||||
@ -3261,6 +3267,14 @@ class P4Sync(Command, P4UserMap):
|
|||||||
print self.gitError.read()
|
print self.gitError.read()
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
def sync_origin_only(self):
|
||||||
|
if self.syncWithOrigin:
|
||||||
|
self.hasOrigin = originP4BranchesExist()
|
||||||
|
if self.hasOrigin:
|
||||||
|
if not self.silent:
|
||||||
|
print 'Syncing with origin first, using "git fetch origin"'
|
||||||
|
system("git fetch origin")
|
||||||
|
|
||||||
def importHeadRevision(self, revision):
|
def importHeadRevision(self, revision):
|
||||||
print "Doing initial import of %s from revision %s into %s" % (' '.join(self.depotPaths), revision, self.branch)
|
print "Doing initial import of %s from revision %s into %s" % (' '.join(self.depotPaths), revision, self.branch)
|
||||||
|
|
||||||
@ -3333,12 +3347,7 @@ class P4Sync(Command, P4UserMap):
|
|||||||
else:
|
else:
|
||||||
self.refPrefix = "refs/heads/p4/"
|
self.refPrefix = "refs/heads/p4/"
|
||||||
|
|
||||||
if self.syncWithOrigin:
|
self.sync_origin_only()
|
||||||
self.hasOrigin = originP4BranchesExist()
|
|
||||||
if self.hasOrigin:
|
|
||||||
if not self.silent:
|
|
||||||
print 'Syncing with origin first, using "git fetch origin"'
|
|
||||||
system("git fetch origin")
|
|
||||||
|
|
||||||
branch_arg_given = bool(self.branch)
|
branch_arg_given = bool(self.branch)
|
||||||
if len(self.branch) == 0:
|
if len(self.branch) == 0:
|
||||||
|
Loading…
Reference in New Issue
Block a user