mirror of
https://github.com/newren/git-filter-repo.git
synced 2024-07-06 02:12:17 +02:00
filter-repo: add ability to handle deleted files in commits
Signed-off-by: Elijah Newren <newren@gmail.com>
This commit is contained in:
parent
c92a4e471e
commit
003dd21714
@ -94,13 +94,18 @@ class Reset(GitElement):
|
||||
file.write('from %s\n' % self.from_ref)
|
||||
|
||||
class FileChanges(object):
|
||||
def __init__(self, filename, mode, mark = None):
|
||||
def __init__(self, type, filename, mode = None, mark = None):
|
||||
self.type = type
|
||||
self.filename = filename
|
||||
self.mode = mode
|
||||
self.mark = translate_mark(mark)
|
||||
if type == 'M':
|
||||
self.mark = translate_mark(mark)
|
||||
|
||||
def dump(self, file):
|
||||
file.write('M %s :%d %s\n' % (self.mode, self.mark, self.filename))
|
||||
if self.type == 'M':
|
||||
file.write('M %s :%d %s\n' % (self.mode, self.mark, self.filename))
|
||||
elif self.type == 'D':
|
||||
file.write('D %s\n' % self.filename)
|
||||
|
||||
class Commit(GitElement):
|
||||
def __init__(self, branch,
|
||||
@ -199,6 +204,16 @@ class FastExportParser(object):
|
||||
# Now print the resulting reset to stdout
|
||||
reset.dump(self.output)
|
||||
|
||||
def _make_file_changes(self, t):
|
||||
if t[0] == 'M':
|
||||
mode = t[1]
|
||||
mark = int(t[2][1:])
|
||||
filename = t[3]
|
||||
return FileChanges(t[0], filename, mode, mark)
|
||||
elif t[0] == 'D':
|
||||
filename = t[1]
|
||||
return FileChanges(t[0], filename)
|
||||
|
||||
def _make_commit(self, t):
|
||||
#
|
||||
# Create the Commit object from the parser tokens...
|
||||
@ -310,9 +325,10 @@ class FastExportParser(object):
|
||||
Literal('755') | Literal('120000')
|
||||
path_str = CharsNotIn(' \n') | dblQuotedString
|
||||
file_obm = Literal('M') - sp + mode + sp + idnum + sp + path_str + lf
|
||||
file_change = file_obm
|
||||
file_del = Literal('D') - sp + path_str + lf
|
||||
file_change = file_obm | file_del
|
||||
#file_change = file_clr|file_del|file_rnm|file_cpy|file_obm|file_inm
|
||||
file_change.setParseAction(lambda t: FileChanges(t[3], t[1], int(t[2][1:])))
|
||||
file_change.setParseAction(lambda t: self._make_file_changes(t))
|
||||
|
||||
# Parsing commits
|
||||
author_info = Literal('author') + person_info
|
||||
|
Loading…
Reference in New Issue
Block a user