diff --git a/mercurial/patch.py b/mercurial/patch.py --- a/mercurial/patch.py +++ b/mercurial/patch.py @@ -393,7 +393,7 @@ gp = None gitpatches = [] for line in lr: - line = line.rstrip(b' \r\n') + line = line.rstrip(b'\r\n') if line.startswith(b'diff --git a/'): m = gitre.match(line) if m: @@ -2073,7 +2073,7 @@ yield b'file', (afile, bfile, h, gp and gp.copy() or None) yield b'hunk', h elif x.startswith(b'diff --git a/'): - m = gitre.match(x.rstrip(b' \r\n')) + m = gitre.match(x.rstrip(b'\r\n')) if not m: continue if gitpatches is None: diff --git a/tests/test-shelve.t b/tests/test-shelve.t --- a/tests/test-shelve.t +++ b/tests/test-shelve.t @@ -1512,3 +1512,26 @@ $ hg unshelve -i --keep abort: --keep on --interactive is not yet supported [255] + + $ hg update -q --clean . + +Test that we can successfully shelve and unshelve a file with a trailing space +in the filename. Such filenames are supposedly unsupported on Windows, so we +wrap it in the no-windows check. Also test `hg patch` of the .patch file +produced by `hg shelve`. +#if no-windows + $ echo hi > 'my filename ' + $ hg add 'my filename ' + warning: filename ends with ' ', which is not allowed on Windows: 'my filename ' + $ hg shelve + shelved as default-01 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ cp .hg/shelved/default-01.patch test_patch.patch + $ hg unshelve + unshelving change 'default-01' + $ cat 'my filename ' + hi + $ hg update -q --clean . + $ hg patch -p1 test_patch.patch + applying test_patch.patch +#endif