# HG changeset patch # User Patrick Mezard # Date 2010-09-20 19:42:11 # Node ID b0bb72460c4420b4d66d4ae7b8efdf0809fd27c9 # Parent 40c40c6f20b84b5326e063560b69b82d07dba29a patch: fix target when patching broken symlinks (issue2368) diff --git a/mercurial/patch.py b/mercurial/patch.py --- a/mercurial/patch.py +++ b/mercurial/patch.py @@ -923,7 +923,7 @@ def selectfile(afile_orig, bfile_orig, h if afile == bfile: goodb = gooda else: - goodb = not nullb and os.path.exists(bfile) + goodb = not nullb and os.path.lexists(bfile) createfunc = hunk.createfile missing = not goodb and not gooda and not createfunc() diff --git a/tests/test-mq-symlinks b/tests/test-mq-symlinks --- a/tests/test-mq-symlinks +++ b/tests/test-mq-symlinks @@ -55,3 +55,14 @@ hg qrefresh --git hg qpop hg qpush hg st -c + +echo '% replace broken symlink with another broken symlink' +ln -s linka linka +hg add linka +hg qnew link +hg mv linka linkb +ln -sf linkb linkb +hg qnew movelink +hg qpop +hg qpush +$TESTDIR/readlink.py linkb 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 @@ -29,3 +29,9 @@ now at: removesl.patch C b C c C s +% replace broken symlink with another broken symlink +popping movelink +now at: link +applying movelink +now at: movelink +linkb -> linkb