200 self.parent = parent |
200 self.parent = parent |
201 # nodeid and branch are for external use by TortoiseHg and others |
201 # nodeid and branch are for external use by TortoiseHg and others |
202 self.nodeid = nodeid |
202 self.nodeid = nodeid |
203 self.branch = branch |
203 self.branch = branch |
204 self.haspatch = diffstart > 1 |
204 self.haspatch = diffstart > 1 |
205 self.plainmode = plainmode |
205 self.plainmode = (plainmode or |
|
206 '# HG changeset patch' not in self.comments and |
|
207 util.any(c.startswith('Date: ') or |
|
208 c.startswith('From: ') |
|
209 for c in self.comments)) |
206 |
210 |
207 def setuser(self, user): |
211 def setuser(self, user): |
208 if not self.updateheader(['From: ', '# User '], user): |
212 if not self.updateheader(['From: ', '# User '], user): |
209 try: |
213 try: |
210 patchheaderat = self.comments.index('# HG changeset patch') |
214 patchheaderat = self.comments.index('# HG changeset patch') |
211 self.comments.insert(patchheaderat + 1, '# User ' + user) |
215 self.comments.insert(patchheaderat + 1, '# User ' + user) |
212 except ValueError: |
216 except ValueError: |
213 if self.plainmode or self._hasheader(['Date: ']): |
217 if self.plainmode: |
214 self.comments = ['From: ' + user] + self.comments |
218 self.comments = ['From: ' + user] + self.comments |
215 else: |
219 else: |
216 tmp = ['# HG changeset patch', '# User ' + user] |
220 tmp = ['# HG changeset patch', '# User ' + user] |
217 self.comments = tmp + self.comments |
221 self.comments = tmp + self.comments |
218 self.user = user |
222 self.user = user |
221 if not self.updateheader(['Date: ', '# Date '], date): |
225 if not self.updateheader(['Date: ', '# Date '], date): |
222 try: |
226 try: |
223 patchheaderat = self.comments.index('# HG changeset patch') |
227 patchheaderat = self.comments.index('# HG changeset patch') |
224 self.comments.insert(patchheaderat + 1, '# Date ' + date) |
228 self.comments.insert(patchheaderat + 1, '# Date ' + date) |
225 except ValueError: |
229 except ValueError: |
226 if self.plainmode or self._hasheader(['From: ']): |
230 if self.plainmode: |
227 self.comments = ['Date: ' + date] + self.comments |
231 self.comments = ['Date: ' + date] + self.comments |
228 else: |
232 else: |
229 tmp = ['# HG changeset patch', '# Date ' + date] |
233 tmp = ['# HG changeset patch', '# Date ' + date] |
230 self.comments = tmp + self.comments |
234 self.comments = tmp + self.comments |
231 self.date = date |
235 self.date = date |
255 if self.comments[i].startswith(prefix): |
259 if self.comments[i].startswith(prefix): |
256 self.comments[i] = prefix + new |
260 self.comments[i] = prefix + new |
257 res = True |
261 res = True |
258 break |
262 break |
259 return res |
263 return res |
260 |
|
261 def _hasheader(self, prefixes): |
|
262 '''Check if a header starts with any of the given prefixes.''' |
|
263 for prefix in prefixes: |
|
264 for comment in self.comments: |
|
265 if comment.startswith(prefix): |
|
266 return True |
|
267 return False |
|
268 |
264 |
269 def __str__(self): |
265 def __str__(self): |
270 s = '\n'.join(self.comments).rstrip() |
266 s = '\n'.join(self.comments).rstrip() |
271 if not s: |
267 if not s: |
272 return '' |
268 return '' |