Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/cmdutil.py @ 25257:07326d76f19d
record: extract code to compute newly added and modified files
We want to reuse this logic in revert.
author | Laurent Charignon <lcharignon@fb.com> |
---|---|
date | Thu, 21 May 2015 14:32:14 -0700 |
parents | 5a8398b085ed |
children | f37a69ec3f47 |
comparison
equal
deleted
inserted
replaced
25256:5a8398b085ed | 25257:07326d76f19d |
---|---|
19 | 19 |
20 def ishunk(x): | 20 def ishunk(x): |
21 hunkclasses = (crecordmod.uihunk, patch.recordhunk) | 21 hunkclasses = (crecordmod.uihunk, patch.recordhunk) |
22 return isinstance(x, hunkclasses) | 22 return isinstance(x, hunkclasses) |
23 | 23 |
24 def newandmodified(chunks, originalchunks): | |
25 newlyaddedandmodifiedfiles = set() | |
26 for chunk in chunks: | |
27 if ishunk(chunk) and chunk.header.isnewfile() and chunk not in \ | |
28 originalchunks: | |
29 newlyaddedandmodifiedfiles.add(chunk.header.filename()) | |
30 return newlyaddedandmodifiedfiles | |
31 | |
24 def parsealiases(cmd): | 32 def parsealiases(cmd): |
25 return cmd.lstrip("^").split("|") | 33 return cmd.lstrip("^").split("|") |
26 | 34 |
27 def setupwrapcolorwrite(ui): | 35 def setupwrapcolorwrite(ui): |
28 # wrap ui.write so diff output can be labeled/colorized | 36 # wrap ui.write so diff output can be labeled/colorized |
107 raise util.Abort(_('error parsing patch: %s') % err) | 115 raise util.Abort(_('error parsing patch: %s') % err) |
108 | 116 |
109 # We need to keep a backup of files that have been newly added and | 117 # We need to keep a backup of files that have been newly added and |
110 # modified during the recording process because there is a previous | 118 # modified during the recording process because there is a previous |
111 # version without the edit in the workdir | 119 # version without the edit in the workdir |
112 newlyaddedandmodifiedfiles = set() | 120 newlyaddedandmodifiedfiles = newandmodified(chunks, originalchunks) |
113 for chunk in chunks: | |
114 if ishunk(chunk) and chunk.header.isnewfile() and chunk not in \ | |
115 originalchunks: | |
116 newlyaddedandmodifiedfiles.add(chunk.header.filename()) | |
117 contenders = set() | 121 contenders = set() |
118 for h in chunks: | 122 for h in chunks: |
119 try: | 123 try: |
120 contenders.update(set(h.files())) | 124 contenders.update(set(h.files())) |
121 except AttributeError: | 125 except AttributeError: |