Mercurial > hg
changeset 35009:99ab7bc944d2 stable
scmutil: don't try to delete origbackup symlinks to directories (issue5731)
When origbackuppath is set, when looking to see if a file we are backing up
conflicts with a directory in the origbackuppath, we incorrectly match on
symlinks to directories. This means we try to call vfs.rmtree on the
symlink, which fails.
Differential Revision: https://phab.mercurial-scm.org/D1311
author | Mark Thomas <mbthomas@fb.com> |
---|---|
date | Fri, 03 Nov 2017 09:27:36 -0700 |
parents | ad671b4cb9fc |
children | 36507048da0f b69c700b6de6 3f2e49d9802e |
files | mercurial/scmutil.py tests/test-origbackup-conflict.t |
diffstat | 2 files changed, 3 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/scmutil.py Fri Nov 03 09:27:35 2017 -0700 +++ b/mercurial/scmutil.py Fri Nov 03 09:27:36 2017 -0700 @@ -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)
--- a/tests/test-origbackup-conflict.t Fri Nov 03 09:27:35 2017 -0700 +++ b/tests/test-origbackup-conflict.t Fri Nov 03 09:27:36 2017 -0700 @@ -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