diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py --- a/mercurial/scmutil.py +++ b/mercurial/scmutil.py @@ -610,7 +610,7 @@ origvfs.makedirs(origbackupdir) - if origvfs.isdir(filepathfromroot): + if origvfs.isdir(filepathfromroot) and not origvfs.islink(filepathfromroot): ui.note(_('removing conflicting directory: %s\n') % origvfs.join(filepathfromroot)) origvfs.rmtree(filepathfromroot, forcibly=True) diff --git a/tests/test-origbackup-conflict.t b/tests/test-origbackup-conflict.t --- a/tests/test-origbackup-conflict.t +++ b/tests/test-origbackup-conflict.t @@ -110,18 +110,12 @@ creating directory: $TESTTMP/repo/.hg/origbackups/b (glob) removing conflicting file: $TESTTMP/repo/.hg/origbackups/b (glob) getting d - removing conflicting directory: $TESTTMP/repo/.hg/origbackups/d (glob) - abort: None - [255] - -Workaround issue by deleting d: - - $ rm d - $ hg up c1 2 files updated, 0 files merged, 0 files removed, 0 files unresolved (activating bookmark c1) $ cat .hg/origbackups/b/c c4 + $ cat .hg/origbackups/d + d3 $ ls ../sym-link-target Incorrectly configure origbackuppath to be under a file