diff options
author | Andrej Shadura <andrew@shadura.me> | 2018-07-15 11:24:30 +0200 |
---|---|---|
committer | Andrej Shadura <andrew@shadura.me> | 2018-07-15 11:24:30 +0200 |
commit | c7d26ea2314a9a2942e6007d97f05c1a7c70210f (patch) | |
tree | bccb15df46246f7b6b553df12a87eec6fa9acb19 /git_crecord | |
parent | f820def5950d9139e96a266ff0a2054b1b6b51b2 (diff) |
crpatch: add reversehunks and unapplyhunks
Import reversehunks from Mercurial to produce a hunk with applying
in an opposite direction, and unapplyhunks which produces a hunk keeping
all applied changes and instead unapplying the rest.
Diffstat (limited to 'git_crecord')
-rw-r--r-- | git_crecord/crpatch.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/git_crecord/crpatch.py b/git_crecord/crpatch.py index f96cc20..00626aa 100644 --- a/git_crecord/crpatch.py +++ b/git_crecord/crpatch.py @@ -511,6 +511,23 @@ class uihunk(patchnode): fp.write(''.join(self.before + hunklinelist + self.after)) + def reversehunks(self): + m = {'+': '-', '-': '+', '\\': '\\'} + hunk = ['%s%s' % (m[l.prettystr()[0:1]], l.prettystr()[1:]) for l in self.changedlines if l.applied] + return uihunk(self.header, self.fromline, self.toline, self.proc, self.before, hunk, self.after) + + def unapplyhunks(self): + m = {'+': '-', '-': '+', '\\': '\\'} + hunklinelist = [] + for changedline in self.changedlines: + changedlinestr = changedline.prettystr() + if not changedline.applied: + hunklinelist.append('%s%s' % (m[changedlinestr[0]], changedlinestr[1:])) + elif changedlinestr[0] == "+": + hunklinelist.append(" " + changedlinestr[1:]) + return uihunk(self.header, self.fromline, self.toline, self.proc, self.before, hunklinelist, self.after) + + pretty = write def filename(self): |