提交 30b5940b 编写于 作者: S Simon Hausmann 提交者: Junio C Hamano

git-p4: Fix import of changesets with file deletions

Commit 3a70cdfa made readP4Files abort quickly
when the changeset only contains files that are marked for deletion with an empty return
value, which caused the commit to not do anything.

This commit changes readP4Files to distinguish between files that need to be passed to p4
print and files that have no content ("deleted") and merge them in the returned
list.
Signed-off-by: NSimon Hausmann <simon@lst.de>
Signed-off-by: NJunio C Hamano <gitster@pobox.com>
上级 a798b2c0
......@@ -850,29 +850,32 @@ class P4Sync(Command):
## Should move this out, doesn't use SELF.
def readP4Files(self, files):
filesForCommit = []
filesToRead = []
for f in files:
includeFile = True
for val in self.clientSpecDirs:
if f['path'].startswith(val[0]):
if val[1] > 0:
f['include'] = True
else:
f['include'] = False
if val[1] <= 0:
includeFile = False
break
files = [f for f in files
if f['action'] != 'delete' and
(f.has_key('include') == False or f['include'] == True)]
if includeFile:
filesForCommit.append(f)
if f['action'] != 'delete':
filesToRead.append(f)
if not files:
return []
filedata = []
if len(filesToRead) > 0:
filedata = p4CmdList('-x - print',
stdin='\n'.join(['%s#%s' % (f['path'], f['rev'])
for f in filesToRead]),
stdin_mode='w+')
filedata = p4CmdList('-x - print',
stdin='\n'.join(['%s#%s' % (f['path'], f['rev'])
for f in files]),
stdin_mode='w+')
if "p4ExitCode" in filedata[0]:
die("Problems executing p4. Error: [%d]."
% (filedata[0]['p4ExitCode']));
if "p4ExitCode" in filedata[0]:
die("Problems executing p4. Error: [%d]."
% (filedata[0]['p4ExitCode']));
j = 0;
contents = {}
......@@ -896,10 +899,12 @@ class P4Sync(Command):
contents[stat['depotFile']] = text
for f in files:
assert not f.has_key('data')
f['data'] = contents[f['path']]
return files
for f in filesForCommit:
path = f['path']
if contents.has_key(path):
f['data'] = contents[path]
return filesForCommit
def commit(self, details, files, branch, branchPrefixes, parent = ""):
epoch = details["time"]
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册