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')
]
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"]
% (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