Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/patch.py @ 24261:20aac24e2114
record: move header class from record to patch
Part of a series of patches to move record from hgext to core
author | Laurent Charignon <lcharignon@fb.com> |
---|---|
date | Mon, 09 Mar 2015 13:04:50 -0700 |
parents | 76225ab5a5da |
children | a45d1c51109e |
comparison
equal
deleted
inserted
replaced
24260:76225ab5a5da | 24261:20aac24e2114 |
---|---|
801 def close(self): | 801 def close(self): |
802 if self.dirty: | 802 if self.dirty: |
803 self.writelines(self.fname, self.lines, self.mode) | 803 self.writelines(self.fname, self.lines, self.mode) |
804 self.write_rej() | 804 self.write_rej() |
805 return len(self.rej) | 805 return len(self.rej) |
806 | |
807 class header(object): | |
808 """patch header | |
809 """ | |
810 diffgit_re = re.compile('diff --git a/(.*) b/(.*)$') | |
811 diff_re = re.compile('diff -r .* (.*)$') | |
812 allhunks_re = re.compile('(?:index|deleted file) ') | |
813 pretty_re = re.compile('(?:new file|deleted file) ') | |
814 special_re = re.compile('(?:index|new|deleted|copy|rename) ') | |
815 | |
816 def __init__(self, header): | |
817 self.header = header | |
818 self.hunks = [] | |
819 | |
820 def binary(self): | |
821 return util.any(h.startswith('index ') for h in self.header) | |
822 | |
823 def pretty(self, fp): | |
824 for h in self.header: | |
825 if h.startswith('index '): | |
826 fp.write(_('this modifies a binary file (all or nothing)\n')) | |
827 break | |
828 if self.pretty_re.match(h): | |
829 fp.write(h) | |
830 if self.binary(): | |
831 fp.write(_('this is a binary file\n')) | |
832 break | |
833 if h.startswith('---'): | |
834 fp.write(_('%d hunks, %d lines changed\n') % | |
835 (len(self.hunks), | |
836 sum([max(h.added, h.removed) for h in self.hunks]))) | |
837 break | |
838 fp.write(h) | |
839 | |
840 def write(self, fp): | |
841 fp.write(''.join(self.header)) | |
842 | |
843 def allhunks(self): | |
844 return util.any(self.allhunks_re.match(h) for h in self.header) | |
845 | |
846 def files(self): | |
847 match = self.diffgit_re.match(self.header[0]) | |
848 if match: | |
849 fromfile, tofile = match.groups() | |
850 if fromfile == tofile: | |
851 return [fromfile] | |
852 return [fromfile, tofile] | |
853 else: | |
854 return self.diff_re.match(self.header[0]).groups() | |
855 | |
856 def filename(self): | |
857 return self.files()[-1] | |
858 | |
859 def __repr__(self): | |
860 return '<header %s>' % (' '.join(map(repr, self.files()))) | |
861 | |
862 def special(self): | |
863 return util.any(self.special_re.match(h) for h in self.header) | |
806 | 864 |
807 class hunk(object): | 865 class hunk(object): |
808 def __init__(self, desc, num, lr, context): | 866 def __init__(self, desc, num, lr, context): |
809 self.number = num | 867 self.number = num |
810 self.desc = desc | 868 self.desc = desc |