Skip to content

Commit

Permalink
git-p4: Support purged files and optimize memory usage
Browse files Browse the repository at this point in the history
Purged files are handled as if they are merely deleted, which is not
entirely optimal, but I don't know of any other way to handle them.
File data is deleted from memory as early as they can, and they are more
efficiently handled, at (significant) cost to CPU usage.

Still need to handle p4 branches with spaces in their names.
Still need to make git-p4 clone more reliable.
 - Perhaps with a --continue option. (Sometimes the p4 server kills
 the connection)

Signed-off-by: John Chapman <thestar@fussycoder.id.au>
Acked-by: Simon Hausmann <simon@lst.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
John Chapman authored and Junio C Hamano committed Nov 11, 2008
1 parent 42fc113 commit 7f96e2e
Showing 1 changed file with 7 additions and 7 deletions.
14 changes: 7 additions & 7 deletions contrib/fast-import/git-p4
Original file line number Diff line number Diff line change
Expand Up @@ -946,7 +946,7 @@ class P4Sync(Command):

if includeFile:
filesForCommit.append(f)
if f['action'] != 'delete':
if f['action'] not in ('delete', 'purge'):
filesToRead.append(f)

filedata = []
Expand All @@ -965,11 +965,11 @@ class P4Sync(Command):
while j < len(filedata):
stat = filedata[j]
j += 1
text = [];
text = ''
while j < len(filedata) and filedata[j]['code'] in ('text', 'unicode', 'binary'):
text.append(filedata[j]['data'])
text += filedata[j]['data']
del filedata[j]['data']
j += 1
text = ''.join(text)

if not stat.has_key('depotFile'):
sys.stderr.write("p4 print fails with: %s\n" % repr(stat))
Expand Down Expand Up @@ -1038,7 +1038,7 @@ class P4Sync(Command):
continue

relPath = self.stripRepoPath(file['path'], branchPrefixes)
if file["action"] == "delete":
if file["action"] in ("delete", "purge"):
self.gitStream.write("D %s\n" % relPath)
else:
data = file['data']
Expand Down Expand Up @@ -1077,7 +1077,7 @@ class P4Sync(Command):

cleanedFiles = {}
for info in files:
if info["action"] == "delete":
if info["action"] in ("delete", "purge"):
continue
cleanedFiles[info["depotFile"]] = info["rev"]

Expand Down Expand Up @@ -1400,7 +1400,7 @@ class P4Sync(Command):
if change > newestRevision:
newestRevision = change

if info["action"] == "delete":
if info["action"] in ("delete", "purge"):
# don't increase the file cnt, otherwise details["depotFile123"] will have gaps!
#fileCnt = fileCnt + 1
continue
Expand Down

0 comments on commit 7f96e2e

Please sign in to comment.