# HG changeset patch # User Matt Mackall # Date 1255287259 18000 # Node ID c156bf947e261344eb0852d1156b56107c4b3510 # Parent 7e03423def3ca43706fb5a9a8951ba10cdb75ba0# Parent 5e44d9e562bc120c32011edd6c830be5d3e6a696 Merge with stable diff -r 7e03423def3c -r c156bf947e26 mercurial/encoding.py --- a/mercurial/encoding.py Thu Oct 08 01:17:48 2009 -0500 +++ b/mercurial/encoding.py Sun Oct 11 13:54:19 2009 -0500 @@ -16,7 +16,9 @@ # On darwin, getpreferredencoding ignores the locale environment and # always returns mac-roman. We override this if the environment is # not C (has been customized by the user). - locale.setlocale(locale.LC_CTYPE, '') + lc = locale.setlocale(locale.LC_CTYPE, '') + if lc == 'UTF-8': + locale.setlocale(locale.LC_CTYPE, 'en_US.UTF-8') encoding = locale.getlocale()[1] if not encoding: encoding = locale.getpreferredencoding() or 'ascii' diff -r 7e03423def3c -r c156bf947e26 mercurial/patch.py --- a/mercurial/patch.py Thu Oct 08 01:17:48 2009 -0500 +++ b/mercurial/patch.py Sun Oct 11 13:54:19 2009 -0500 @@ -63,6 +63,10 @@ subject = msg['Subject'] user = msg['From'] + if not subject and not user: + # Not an email, restore parsed headers if any + subject = '\n'.join(': '.join(h) for h in msg.items()) + '\n' + gitsendmail = 'git-send-email' in msg.get('X-Mailer', '') # should try to parse msg['Date'] date = None diff -r 7e03423def3c -r c156bf947e26 mercurial/windows.py --- a/mercurial/windows.py Thu Oct 08 01:17:48 2009 -0500 +++ b/mercurial/windows.py Sun Oct 11 13:54:19 2009 -0500 @@ -267,7 +267,7 @@ head, tail = os.path.split(head) while head and tail: try: - if osutil.listdir(name): + if osutil.listdir(head): return os.rmdir(head) except: diff -r 7e03423def3c -r c156bf947e26 tests/test-import --- a/tests/test-import Thu Oct 08 01:17:48 2009 -0500 +++ b/tests/test-import Sun Oct 11 13:54:19 2009 -0500 @@ -345,3 +345,23 @@ cd oddcreate hg import --no-commit ../create.patch cat foo + +echo % 'first line mistaken for email headers (issue 1859)' +hg init emailconfusion +cd emailconfusion +cat > a.patch < issue1861/x +echo y > issue1861/b/c/y +hg ci -Am add +hg rm issue1861/b +hg ci -m remove +ls issue1861 diff -r 7e03423def3c -r c156bf947e26 tests/test-remove.out --- a/tests/test-remove.out Thu Oct 08 01:17:48 2009 -0500 +++ b/tests/test-remove.out Sun Oct 11 13:54:19 2009 -0500 @@ -111,3 +111,8 @@ ./foo ./test/foo 2 files updated, 0 files merged, 0 files removed, 0 files unresolved +test remove dropping empty trees (issue1861) +adding issue1861/b/c/y +adding issue1861/x +removing issue1861/b/c/y +x