Mercurial > hg
changeset 7319:eae1767cc6a8
export: fixed silent output file overwriting
hg export -o outfile 1 2 3 4 had the same effect as hg -o outfile 4
This was caused by opening with 'w' instead of 'a'. This only occurs when
the filename pattern resulted in ambiguous patch filenames.
author | Ronny Pfannschmidt <Ronny.Pfannschmidt@gmx.de> |
---|---|
date | Thu, 06 Nov 2008 11:17:38 +0100 |
parents | 95e1260b8134 |
children | 8dca507e56ce |
files | mercurial/cmdutil.py mercurial/patch.py tests/test-export tests/test-export.out |
diffstat | 4 files changed, 17 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/cmdutil.py Thu Nov 06 10:39:52 2008 +0100 +++ b/mercurial/cmdutil.py Thu Nov 06 11:17:38 2008 +0100 @@ -214,9 +214,12 @@ def make_file(repo, pat, node=None, total=None, seqno=None, revwidth=None, mode='wb', pathname=None): + + writable = 'w' in mode or 'a' in mode + if not pat or pat == '-': - return 'w' in mode and sys.stdout or sys.stdin - if hasattr(pat, 'write') and 'w' in mode: + return writable and sys.stdout or sys.stdin + if hasattr(pat, 'write') and writable: return pat if hasattr(pat, 'read') and 'r' in mode: return pat
--- a/mercurial/patch.py Thu Nov 06 10:39:52 2008 +0100 +++ b/mercurial/patch.py Thu Nov 06 11:17:38 2008 +0100 @@ -1294,7 +1294,8 @@ if not fp: fp = cmdutil.make_file(repo, template, node, total=total, - seqno=seqno, revwidth=revwidth) + seqno=seqno, revwidth=revwidth, + mode='ab') if fp != sys.stdout and hasattr(fp, 'name'): repo.ui.note("%s\n" % fp.name)
--- a/tests/test-export Thu Nov 06 10:39:52 2008 +0100 +++ b/tests/test-export Thu Nov 06 11:17:38 2008 +0100 @@ -13,3 +13,9 @@ echo "# foo-$out.patch" hg export -v -o "foo-$out.patch" 2:tip done + +echo "# exporting 4 changesets to a file" +hg export -o export_internal 1 2 3 4 +grep HG export_internal | wc -l +echo "# exporting 4 changesets to a file" +hg export 1 2 3 4 | grep HG | wc -l