Show More
@@ -1242,12 +1242,23 b' def email(author):' | |||||
1242 | r = None |
|
1242 | r = None | |
1243 | return author[author.find('<') + 1:r] |
|
1243 | return author[author.find('<') + 1:r] | |
1244 |
|
1244 | |||
|
1245 | def _ellipsis(text, maxlength): | |||
|
1246 | if len(text) <= maxlength: | |||
|
1247 | return text, False | |||
|
1248 | else: | |||
|
1249 | return "%s..." % (text[:maxlength - 3]), True | |||
|
1250 | ||||
1245 | def ellipsis(text, maxlength=400): |
|
1251 | def ellipsis(text, maxlength=400): | |
1246 | """Trim string to at most maxlength (default: 400) characters.""" |
|
1252 | """Trim string to at most maxlength (default: 400) characters.""" | |
1247 | if len(text) <= maxlength: |
|
1253 | try: | |
1248 | return text |
|
1254 | # use unicode not to split at intermediate multi-byte sequence | |
1249 | else: |
|
1255 | utext, truncated = _ellipsis(text.decode(encoding.encoding), | |
1250 | return "%s..." % (text[:maxlength - 3]) |
|
1256 | maxlength) | |
|
1257 | if not truncated: | |||
|
1258 | return text | |||
|
1259 | return utext.encode(encoding.encoding) | |||
|
1260 | except (UnicodeDecodeError, UnicodeEncodeError): | |||
|
1261 | return _ellipsis(text, maxlength)[0] | |||
1251 |
|
1262 | |||
1252 | def walkrepos(path, followsym=False, seen_dirs=None, recurse=False): |
|
1263 | def walkrepos(path, followsym=False, seen_dirs=None, recurse=False): | |
1253 | '''yield every hg repository under path, recursively.''' |
|
1264 | '''yield every hg repository under path, recursively.''' |
@@ -302,3 +302,49 b' test merge' | |||||
302 | changeset 22c88b85aa27 in b |
|
302 | changeset 22c88b85aa27 in b | |
303 | description: merge |
|
303 | description: merge | |
304 | (run 'hg update' to get a working copy) |
|
304 | (run 'hg update' to get a working copy) | |
|
305 | ||||
|
306 | truncate multi-byte subject | |||
|
307 | ||||
|
308 | $ cat <<EOF >> $HGRCPATH | |||
|
309 | > [notify] | |||
|
310 | > maxsubject = 4 | |||
|
311 | > EOF | |||
|
312 | $ echo a >> a/a | |||
|
313 | $ hg --cwd a --encoding utf-8 commit -A -d '0 0' \ | |||
|
314 | > -m `python -c 'print "\xc3\xa0\xc3\xa1\xc3\xa2\xc3\xa3\xc3\xa4"'` | |||
|
315 | $ hg --traceback --cwd b --encoding utf-8 pull ../a | \ | |||
|
316 | > python -c 'import sys,re; print re.sub("\n\t", " ", sys.stdin.read()),' | |||
|
317 | pulling from ../a | |||
|
318 | searching for changes | |||
|
319 | adding changesets | |||
|
320 | adding manifests | |||
|
321 | adding file changes | |||
|
322 | added 1 changesets with 1 changes to 1 files | |||
|
323 | Content-Type: text/plain; charset="us-ascii" | |||
|
324 | MIME-Version: 1.0 | |||
|
325 | Content-Transfer-Encoding: 8bit | |||
|
326 | X-Test: foo | |||
|
327 | Date: * (glob) | |||
|
328 | Subject: \xc3\xa0... (esc) | |||
|
329 | From: test@test.com | |||
|
330 | X-Hg-Notification: changeset 4a47f01c1356 | |||
|
331 | Message-Id: <*> (glob) | |||
|
332 | To: baz@test.com, foo@bar | |||
|
333 | ||||
|
334 | changeset 4a47f01c1356 in b | |||
|
335 | description: \xc3\xa0\xc3\xa1\xc3\xa2\xc3\xa3\xc3\xa4 (esc) | |||
|
336 | diffstat: | |||
|
337 | ||||
|
338 | a | 1 + | |||
|
339 | 1 files changed, 1 insertions(+), 0 deletions(-) | |||
|
340 | ||||
|
341 | diffs (7 lines): | |||
|
342 | ||||
|
343 | diff -r 22c88b85aa27 -r 4a47f01c1356 a | |||
|
344 | --- a/a Thu Jan 01 00:00:03 1970 +0000 | |||
|
345 | +++ b/a Thu Jan 01 00:00:00 1970 +0000 | |||
|
346 | @@ -1,2 +1,3 @@ | |||
|
347 | a | |||
|
348 | a | |||
|
349 | +a | |||
|
350 | (run 'hg update' to get a working copy) |
General Comments 0
You need to be logged in to leave comments.
Login now