filter-repo: don't hardcode sys.stdout, I'll eventually want to pipe elsewhere

Signed-off-by: Elijah Newren <newren@gmail.com>
pull/13/head
Elijah Newren 16 years ago
parent 11057e874e
commit 392d09d084

@ -65,7 +65,7 @@ class GitElement(object):
def __init__(self):
self.type = None
def dump(self):
def dump(self, file):
raise SystemExit("Unimplemented function: %s.dump()", type(self))
class Blob(GitElement):
@ -75,11 +75,11 @@ class Blob(GitElement):
self.data = data
self.mark = translate_mark(mark)
def dump(self):
sys.stdout.write('blob\n')
sys.stdout.write('mark :%d\n' % self.mark)
sys.stdout.write('data %d\n%s' % (len(self.data), self.data))
sys.stdout.write('\n')
def dump(self, file):
file.write('blob\n')
file.write('mark :%d\n' % self.mark)
file.write('data %d\n%s' % (len(self.data), self.data))
file.write('\n')
class Reset(GitElement):
def __init__(self, ref, from_ref = None):
@ -88,10 +88,10 @@ class Reset(GitElement):
self.ref = ref
self.from_ref = from_ref
def dump(self):
sys.stdout.write('reset %s\n' % self.ref)
def dump(self, file):
file.write('reset %s\n' % self.ref)
if self.from_ref:
sys.stdout.write('from %s\n' % self.from_ref)
file.write('from %s\n' % self.from_ref)
class FileChanges(object):
def __init__(self, filename, mode, mark = None):
@ -99,8 +99,8 @@ class FileChanges(object):
self.mode = mode
self.mark = translate_mark(mark)
def dump(self):
sys.stdout.write('M %s :%d %s\n' % (self.mode, self.mark, self.filename))
def dump(self, file):
file.write('M %s :%d %s\n' % (self.mode, self.mark, self.filename))
class Commit(GitElement):
def __init__(self, branch,
@ -129,22 +129,22 @@ class Commit(GitElement):
self.from_commit = None
self.merge_commits = [translate_mark(mark) for mark in merge_commits]
def dump(self):
sys.stdout.write('commit %s\n' % self.branch)
sys.stdout.write('mark :%d\n' % self.mark)
sys.stdout.write('author %s <%s> %s\n' % \
def dump(self, file):
file.write('commit %s\n' % self.branch)
file.write('mark :%d\n' % self.mark)
file.write('author %s <%s> %s\n' % \
(self.author_name, self.author_email, self.author_date))
sys.stdout.write('committer %s <%s> %s\n' % \
file.write('committer %s <%s> %s\n' % \
(self.committer_name, self.committer_email,
self.committer_date))
sys.stdout.write('data %d\n%s' % (len(self.message), self.message))
file.write('data %d\n%s' % (len(self.message), self.message))
if self.from_commit:
sys.stdout.write('from :%s\n' % self.from_commit)
file.write('from :%s\n' % self.from_commit)
for ref in self.merge_commits:
sys.stdout.write('merge :%s\n' % ref)
file.write('merge :%s\n' % ref)
for change in self.file_changes:
change.dump()
sys.stdout.write('\n')
change.dump(file)
file.write('\n')
class FastExportParser(object):
def __init__(self,
@ -161,6 +161,8 @@ class FastExportParser(object):
self.checkpoint_callback = checkpoint_callback
self.everything_callback = everything_callback
self.output = sys.stdout
def _make_blob(self, t):
# Create the Blob object from the parser tokens
mark = int(t[1][1:])
@ -175,7 +177,7 @@ class FastExportParser(object):
self.blob_callback(blob)
# Now print the resulting blob to stdout
blob.dump()
blob.dump(self.output)
# Replace data with its sha1sum to cut down on memory usage
# (python parser stores whole resulting parse tree in memory)
@ -195,7 +197,7 @@ class FastExportParser(object):
self.reset_callback(reset)
# Now print the resulting reset to stdout
reset.dump()
reset.dump(self.output)
def _make_commit(self, t):
#
@ -269,7 +271,7 @@ class FastExportParser(object):
self.commit_callback(reset)
# Now print the resulting commit to stdout
commit.dump()
commit.dump(self.output)
def _setup_parser(self):
# Basic setup

Loading…
Cancel
Save