Mercurial > public > mercurial-scm > hg
comparison mercurial/patch.py @ 4777:5ee5cbfceff3
patch.extract: do not prepend subject if the description already starts with it
author | Brendan Cully <brendan@kublai.com> |
---|---|
date | Mon, 02 Jul 2007 10:59:16 -0700 |
parents | 7a7d4937272b |
children | e321f16f4eac |
comparison
equal
deleted
inserted
replaced
4776:03844af5ebcd | 4777:5ee5cbfceff3 |
---|---|
48 fd, tmpname = tempfile.mkstemp(prefix='hg-patch-') | 48 fd, tmpname = tempfile.mkstemp(prefix='hg-patch-') |
49 tmpfp = os.fdopen(fd, 'w') | 49 tmpfp = os.fdopen(fd, 'w') |
50 try: | 50 try: |
51 msg = email.Parser.Parser().parse(fileobj) | 51 msg = email.Parser.Parser().parse(fileobj) |
52 | 52 |
53 message = msg['Subject'] | 53 subject = msg['Subject'] |
54 user = msg['From'] | 54 user = msg['From'] |
55 # should try to parse msg['Date'] | 55 # should try to parse msg['Date'] |
56 date = None | 56 date = None |
57 nodeid = None | 57 nodeid = None |
58 branch = None | 58 branch = None |
59 parents = [] | 59 parents = [] |
60 | 60 |
61 if message: | 61 if subject: |
62 if message.startswith('[PATCH'): | 62 if subject.startswith('[PATCH'): |
63 pend = message.find(']') | 63 pend = subject.find(']') |
64 if pend >= 0: | 64 if pend >= 0: |
65 message = message[pend+1:].lstrip() | 65 subject = subject[pend+1:].lstrip() |
66 message = message.replace('\n\t', ' ') | 66 subject = subject.replace('\n\t', ' ') |
67 ui.debug('Subject: %s\n' % message) | 67 ui.debug('Subject: %s\n' % subject) |
68 if user: | 68 if user: |
69 ui.debug('From: %s\n' % user) | 69 ui.debug('From: %s\n' % user) |
70 diffs_seen = 0 | 70 diffs_seen = 0 |
71 ok_types = ('text/plain', 'text/x-diff', 'text/x-patch') | 71 ok_types = ('text/plain', 'text/x-diff', 'text/x-patch') |
72 | 72 |
82 ignoretext = False | 82 ignoretext = False |
83 | 83 |
84 ui.debug(_('found patch at byte %d\n') % m.start(0)) | 84 ui.debug(_('found patch at byte %d\n') % m.start(0)) |
85 diffs_seen += 1 | 85 diffs_seen += 1 |
86 cfp = cStringIO.StringIO() | 86 cfp = cStringIO.StringIO() |
87 if message: | |
88 cfp.write(message) | |
89 cfp.write('\n') | |
90 for line in payload[:m.start(0)].splitlines(): | 87 for line in payload[:m.start(0)].splitlines(): |
91 if line.startswith('# HG changeset patch'): | 88 if line.startswith('# HG changeset patch'): |
92 ui.debug(_('patch generated by hg export\n')) | 89 ui.debug(_('patch generated by hg export\n')) |
93 hgpatch = True | 90 hgpatch = True |
94 # drop earlier commit message content | 91 # drop earlier commit message content |
121 except: | 118 except: |
122 tmpfp.close() | 119 tmpfp.close() |
123 os.unlink(tmpname) | 120 os.unlink(tmpname) |
124 raise | 121 raise |
125 | 122 |
123 if subject and not message.startswith(subject): | |
124 message = '%s\n%s' % (subject, message) | |
126 tmpfp.close() | 125 tmpfp.close() |
127 if not diffs_seen: | 126 if not diffs_seen: |
128 os.unlink(tmpname) | 127 os.unlink(tmpname) |
129 return None, message, user, date, branch, None, None, None | 128 return None, message, user, date, branch, None, None, None |
130 p1 = parents and parents.pop(0) or None | 129 p1 = parents and parents.pop(0) or None |