Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
Make git-p4 submit --direct safer by also creating a git commit
author
Simon Hausmann
<shausman@trolltech.com>
Mon, 21 May 2007 09:04:26 +0000
(11:04 +0200)
committer
Simon Hausmann
<shausman@trolltech.com>
Mon, 21 May 2007 09:04:26 +0000
(11:04 +0200)
Signed-off-by: Simon Hausmann <shausman@trolltech.com>
contrib/fast-import/git-p4
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
cbf5efa
)
diff --git
a/contrib/fast-import/git-p4
b/contrib/fast-import/git-p4
index f08ee6da44f65d19eea496f47179109b53d0eca7..b32d8dbfd3c4816baec9cbcfdceb71155b77ac01 100755
(executable)
--- a/
contrib/fast-import/git-p4
+++ b/
contrib/fast-import/git-p4
@@
-10,12
+10,6
@@
# TODO: * implement git-p4 rollback <perforce change number> for debugging
# to roll back all p4 remote branches to a commit older or equal to
# the specified change.
# TODO: * implement git-p4 rollback <perforce change number> for debugging
# to roll back all p4 remote branches to a commit older or equal to
# the specified change.
-# * for git-p4 submit --direct it would be nice to still create a
-# git commit without updating HEAD before submitting to perforce.
-# With the commit sha1 printed (or recoded in a .git/foo file?)
-# it's possible to recover if anything goes wrong instead of potentially
-# loosing a change entirely because it was never comitted to git and
-# the p4 submit failed (or resulted in lots of conflicts, etc.)
# * Consider making --with-origin the default, assuming that the git
# protocol is always more efficient. (needs manual testing first :)
#
# * Consider making --with-origin the default, assuming that the git
# protocol is always more efficient. (needs manual testing first :)
#
@@
-328,9
+322,17
@@
class P4Submit(Command):
print submitTemplate
raw_input("Press return to continue...")
else:
print submitTemplate
raw_input("Press return to continue...")
else:
- pipe = os.popen("p4 submit -i", "wb")
- pipe.write(submitTemplate)
- pipe.close()
+ if self.directSubmit:
+ print "Submitting to git first"
+ os.chdir(self.oldWorkingDirectory)
+ pipe = os.popen("git commit -a -F -", "wb")
+ pipe.write(submitTemplate)
+ pipe.close()
+ os.chdir(self.clientPath)
+
+ pipe = os.popen("p4 submit -i", "wb")
+ pipe.write(submitTemplate)
+ pipe.close()
elif response == "s":
for f in editedFiles:
system("p4 revert \"%s\"" % f);
elif response == "s":
for f in editedFiles:
system("p4 revert \"%s\"" % f);
@@
-382,7
+384,7
@@
class P4Submit(Command):
sys.exit(128)
print "Perforce checkout for depot path %s located at %s" % (depotPath, self.clientPath)
sys.exit(128)
print "Perforce checkout for depot path %s located at %s" % (depotPath, self.clientPath)
- oldWorkingDirectory = os.getcwd()
+
self.
oldWorkingDirectory = os.getcwd()
if self.directSubmit:
self.diffStatus = mypopen("git diff -r --name-status HEAD").readlines()
if self.directSubmit:
self.diffStatus = mypopen("git diff -r --name-status HEAD").readlines()
@@
-442,16
+444,8
@@
class P4Submit(Command):
print "No changes found to apply between %s and current HEAD" % self.origin
else:
print "All changes applied!"
print "No changes found to apply between %s and current HEAD" % self.origin
else:
print "All changes applied!"
- response = ""
- os.chdir(oldWorkingDirectory)
-
- if self.directSubmit:
- response = raw_input("Do you want to DISCARD your git WORKING DIRECTORY CHANGES and sync from Perforce now using git-p4 rebase? [y]es/[n]o ")
- if response == "y" or response == "yes":
- system("git reset --hard")
-
- if len(response) == 0:
- response = raw_input("Do you want to sync from Perforce now using git-p4 rebase? [y]es/[n]o ")
+ os.chdir(self.oldWorkingDirectory)
+ 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":
rebase = P4Rebase()
rebase.run([])
if response == "y" or response == "yes":
rebase = P4Rebase()
rebase.run([])