|
|
|
@ -580,7 +580,8 @@ class P4Sync(Command):
@@ -580,7 +580,8 @@ class P4Sync(Command):
|
|
|
|
|
optparse.make_option("--silent", dest="silent", action="store_true"), |
|
|
|
|
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("--import-local", dest="importIntoRemotes", action="store_false", |
|
|
|
|
help="Import into refs/heads/ , not refs/remotes"), |
|
|
|
|
optparse.make_option("--max-changes", dest="maxChanges"), |
|
|
|
|
optparse.make_option("--keep-path", dest="keepRepoPath", action='store_true') |
|
|
|
|
] |
|
|
|
@ -680,41 +681,22 @@ class P4Sync(Command):
@@ -680,41 +681,22 @@ class P4Sync(Command):
|
|
|
|
|
if not specs: |
|
|
|
|
return |
|
|
|
|
|
|
|
|
|
data = read_pipe('p4 print %s' % ' '.join(['"%s"' % path |
|
|
|
|
for (path, info) in specs])) |
|
|
|
|
filedata = p4CmdList('print %s' % ' '.join(['"%s"' % path |
|
|
|
|
for (path, info) in specs])) |
|
|
|
|
|
|
|
|
|
idx = 0 |
|
|
|
|
for j in range(0, len(specs)): |
|
|
|
|
(pathrev, info) = specs[j] |
|
|
|
|
j = 0; |
|
|
|
|
contents = {} |
|
|
|
|
while filedata[j:]: |
|
|
|
|
stat = filedata[j] |
|
|
|
|
text = filedata[j+1] |
|
|
|
|
j += 2 |
|
|
|
|
|
|
|
|
|
assert idx < len(data) |
|
|
|
|
if data[idx:idx + len(pathrev)] != pathrev: |
|
|
|
|
assert False |
|
|
|
|
idx = data.find ('\n', idx) |
|
|
|
|
assert idx > 0 |
|
|
|
|
idx += 1 |
|
|
|
|
assert stat['code'] == 'stat' and text['code'] == 'text' |
|
|
|
|
contents[stat['depotFile']] = text['data'] |
|
|
|
|
|
|
|
|
|
start = idx |
|
|
|
|
|
|
|
|
|
end = -1 |
|
|
|
|
if j < len(specs)-1: |
|
|
|
|
(next_pathrev, next_info) = specs[j+1] |
|
|
|
|
end = data.find(next_pathrev, start) |
|
|
|
|
|
|
|
|
|
if end < 0: |
|
|
|
|
print 'j' |
|
|
|
|
print 'PATHREV', pathrev, specs[j] |
|
|
|
|
print 'nextpathrev', next_pathrev, specs[j+1] |
|
|
|
|
print 'start', start, len(data) |
|
|
|
|
print 'end', end |
|
|
|
|
|
|
|
|
|
assert end >= 0 |
|
|
|
|
else: |
|
|
|
|
end = len(data) |
|
|
|
|
|
|
|
|
|
info['data'] = data[start:end] |
|
|
|
|
idx = end |
|
|
|
|
assert idx == len(data) |
|
|
|
|
for f in files: |
|
|
|
|
assert not f.has_key('data') |
|
|
|
|
f['data'] = contents[f['path']] |
|
|
|
|
|
|
|
|
|
def commit(self, details, files, branch, branchPrefixes, parent = ""): |
|
|
|
|
epoch = details["time"] |
|
|
|
@ -1158,8 +1140,12 @@ class P4Sync(Command):
@@ -1158,8 +1140,12 @@ class P4Sync(Command):
|
|
|
|
|
% (p, self.revision) |
|
|
|
|
for p in self.depotPaths])): |
|
|
|
|
|
|
|
|
|
if not info.has_key("change"): |
|
|
|
|
print info |
|
|
|
|
if info['code'] == 'error': |
|
|
|
|
sys.stderr.write("p4 returned an error: %s\n" |
|
|
|
|
% info['data']) |
|
|
|
|
sys.exit(1) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
change = int(info["change"]) |
|
|
|
|
if change > newestRevision: |
|
|
|
|
newestRevision = change |
|
|
|
|