optparse.make_option("--log-substitutions", dest="substFile"),
optparse.make_option("--noninteractive", action="store_false"),
optparse.make_option("--dry-run", action="store_true"),
- optparse.make_option("--apply-as-patch", action="store_true", dest="applyAsPatch")
]
self.description = "Submit changes from git to the perforce depot."
self.usage += " [name of git branch to submit into perforce depot]"
self.substFile = ""
self.firstTime = True
self.origin = ""
- self.applyAsPatch = True
self.logSubstitutions = {}
self.logSubstitutions["<enter description here>"] = "%log%"
self.config["commits"] = commits
- if not self.applyAsPatch:
- print "Creating temporary p4-sync branch from %s ..." % self.origin
- system("git checkout -f -b p4-sync %s" % self.origin)
-
def prepareLogMessage(self, template, message):
result = ""
else:
die("unknown modifier %s for %s" % (modifier, path))
- if self.applyAsPatch:
- system("git diff-tree -p --diff-filter=ACMRTUXB \"%s^\" \"%s\" | patch -p1" % (id, id))
- else:
- system("git diff-files --name-only -z | git update-index --remove -z --stdin")
- system("git cherry-pick --no-commit \"%s\"" % id)
+ system("git diff-tree -p --diff-filter=ACMRTUXB \"%s^\" \"%s\" | patch -p1" % (id, id))
for f in filesToAdd:
system("p4 add %s" % f)
firstIteration = True
while response == "e":
if not firstIteration:
- response = raw_input("Do you want to submit this change (y/e/n)? ")
+ response = raw_input("Do you want to submit this change? [y]es/[e]dit/[n]o ")
firstIteration = False
if response == "e":
[handle, fileName] = tempfile.mkstemp()
sys.exit(128)
print "Perforce checkout for depot path %s located at %s" % (depotPath, clientPath)
+ oldWorkingDirectory = os.getcwd()
os.chdir(clientPath)
- response = raw_input("Do you want to sync %s with p4 sync? (y/n) " % clientPath)
+ response = raw_input("Do you want to sync %s with p4 sync? [y]es/[n]o " % clientPath)
if response == "y" or response == "yes":
system("p4 sync ...")
print "No changes found to apply between %s and current HEAD" % self.origin
else:
print "All changes applied!"
- if not self.applyAsPatch:
- print "Deleting temporary p4-sync branch and going back to %s" % self.master
- system("git checkout %s" % self.master)
- system("git branch -D p4-sync")
- print "Cleaning out your perforce checkout by doing p4 edit ... ; p4 revert ..."
- system("p4 edit ... >/dev/null")
- system("p4 revert ... >/dev/null")
+ response = raw_input("Do you want to sync from Perforce now using git-p4 rebase? [y]es/[n]o ")
+ if response == "y" or response == "yes":
+ os.chdir(oldWorkingDirectory)
+ rebase = P4Rebase()
+ rebase.run([])
os.remove(self.configFile)
return True
except:
pass
- self.tz = - time.timezone / 36
- tzsign = ("%s" % self.tz)[0]
- if tzsign != '+' and tzsign != '-':
- self.tz = "+" + ("%s" % self.tz)
+ self.tz = "%+03d%02d" % (- time.timezone / 3600, ((- time.timezone % 3600) / 60))
- self.gitOutput, self.gitStream, self.gitError = popen2.popen3("git fast-import")
+ importProcess = popen2.Popen3("git fast-import", capturestderr = True)
+ self.gitOutput = importProcess.fromchild
+ self.gitStream = importProcess.tochild
+ self.gitError = importProcess.childerr
if len(self.revision) > 0:
print "Doing initial import of %s from revision %s" % (self.globalPrefix, self.revision)
try:
self.commit(details, self.extractFilesFromCommit(details), self.branch, self.globalPrefix)
except IOError:
+ print "IO error with git fast-import. Is your git version recent enough?"
print self.gitError.read()
else:
self.gitStream.close()
self.gitOutput.close()
self.gitError.close()
+ importProcess.wait()
os.popen("git repo-config p4.depotpath %s" % self.globalPrefix).read()
if len(self.initialTag) > 0:
system("git init")
if not P4Sync.run(self, [depotPath]):
return False
- os.wait()
if self.branch != "master":
system("git branch master p4")
system("git checkout -f")