# HG changeset patch # User Patrick Mezard # Date 2010-09-20 19:42:11 # Node ID aca8b10bca6e39344a26271e3d3958feab9d5db5 # Parent b0bb72460c4420b4d66d4ae7b8efdf0809fd27c9 patch: do not overwrite broken untracked symlinks diff --git a/mercurial/patch.py b/mercurial/patch.py --- a/mercurial/patch.py +++ b/mercurial/patch.py @@ -25,7 +25,7 @@ class NoHunks(PatchError): def copyfile(src, dst, basedir): abssrc, absdst = [util.canonpath(basedir, basedir, x) for x in [src, dst]] - if os.path.exists(absdst): + if os.path.lexists(absdst): raise util.Abort(_("cannot create %s: destination already exists") % dst) diff --git a/tests/test-mq-symlinks b/tests/test-mq-symlinks --- a/tests/test-mq-symlinks +++ b/tests/test-mq-symlinks @@ -66,3 +66,9 @@ hg qnew movelink hg qpop hg qpush $TESTDIR/readlink.py linkb +echo '% check patch does not overwrite untracked symlinks' +hg qpop +ln -s linkbb linkb +hg qpush + +true \ No newline at end of file diff --git a/tests/test-mq-symlinks.out b/tests/test-mq-symlinks.out --- a/tests/test-mq-symlinks.out +++ b/tests/test-mq-symlinks.out @@ -35,3 +35,10 @@ now at: link applying movelink now at: movelink linkb -> linkb +% check patch does not overwrite untracked symlinks +popping movelink +now at: link +applying movelink +patch failed, unable to continue (try -v) +patch failed, rejects left in working dir +errors during apply, please fix and refresh movelink