aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorHan-Wen Nienhuys <hanwen@google.com>2007-05-23 18:20:53 -0300
committerHan-Wen Nienhuys <hanwen@google.com>2007-05-28 11:18:31 -0300
commit8b41a97f8a3e2778ce733cd3d7e181bc28cc43a0 (patch)
tree9601e3c8b409d407b91f8e117bc69ef077dead51 /contrib
parent6754a299d8d977326e396d641106cc5db4d29db1 (diff)
downloadgit-8b41a97f8a3e2778ce733cd3d7e181bc28cc43a0.tar.gz
git-8b41a97f8a3e2778ce733cd3d7e181bc28cc43a0.tar.xz
clone and sync --keep-path to keep perforce path to module.
Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>
Diffstat (limited to 'contrib')
-rwxr-xr-xcontrib/fast-import/git-p421
1 files changed, 12 insertions, 9 deletions
diff --git a/contrib/fast-import/git-p4 b/contrib/fast-import/git-p4
index 93c9d6417..51d117b78 100755
--- a/contrib/fast-import/git-p4
+++ b/contrib/fast-import/git-p4
@@ -11,6 +11,7 @@
import optparse, sys, os, marshal, popen2, subprocess, shelve
import tempfile, getopt, sha, os.path, time, platform
import re
+
from sets import Set;
gitdir = os.environ.get("GIT_DIR", "")
@@ -20,7 +21,6 @@ def write_pipe(c, str):
if not silent:
sys.stderr.write('writing pipe: %s\n' % c)
- ## todo: check return status
pipe = os.popen(c, 'w')
val = pipe.write(str)
if pipe.close():
@@ -32,7 +32,7 @@ def write_pipe(c, str):
def read_pipe(c):
if not silent:
sys.stderr.write('reading pipe: %s\n' % c)
- ## todo: check return status
+
pipe = os.popen(c, 'rb')
val = pipe.read()
if pipe.close():
@@ -60,8 +60,6 @@ def system(cmd):
if os.system(cmd) != 0:
die("command failed: %s" % cmd)
-
-
def p4CmdList(cmd):
cmd = "p4 -G %s" % cmd
pipe = os.popen(cmd, "rb")
@@ -566,7 +564,8 @@ class P4Sync(Command):
optparse.make_option("--detect-labels", dest="detectLabels", action="store_true"),
optparse.make_option("--verbose", dest="verbose", action="store_true"),
optparse.make_option("--import-local", dest="importIntoRemotes", action="store_false"),
- optparse.make_option("--max-changes", dest="maxChanges")
+ optparse.make_option("--max-changes", dest="maxChanges"),
+ optparse.make_option("--keep-path", dest="keepRepoPath")
]
self.description = """Imports from Perforce into a git repository.\n
example:
@@ -590,6 +589,7 @@ class P4Sync(Command):
self.maxChanges = ""
self.isWindows = (platform.system() == "Windows")
self.depotPath = None
+ self.keepRepoPath = False
if gitConfig("git-p4.syncFromOrigin") == "false":
self.syncWithOrigin = False
@@ -617,8 +617,11 @@ class P4Sync(Command):
fnum = fnum + 1
return files
- def stripRepoPath(self, path):
- return path[len(self.depotPath):]
+ def stripRepoPath(self, path, prefix):
+ if self.keepRepoPath:
+ prefix = re.sub("^(//[^/]+/).*", r'\1', prefix)
+
+ return path[len(prefix):]
def splitFilesIntoBranches(self, commit):
branches = {}
@@ -638,7 +641,7 @@ class P4Sync(Command):
file["type"] = commit["type%s" % fnum]
fnum = fnum + 1
- relPath = self.stripRepoPath(path)
+ relPath = self.stripRepoPath(path, self.depotPath)
for branch in self.knownBranches.keys():
@@ -687,7 +690,7 @@ class P4Sync(Command):
continue
rev = file["rev"]
depotPath = path + "#" + rev
- relPath = path[len(branchPrefix):]
+ relPath = self.stripRepoPath(path, branchPrefix)
action = file["action"]
if file["type"] == "apple":