[Bug 4621] New: Don't follow symlinks on windows

mercurial-bugs at selenic.com mercurial-bugs at selenic.com
Fri Apr 24 07:30:40 UTC 2015


http://bz.selenic.com/show_bug.cgi?id=4621

          Priority: normal
            Bug ID: 4621
                CC: mercurial-devel at selenic.com
          Assignee: bugzilla at selenic.com
           Summary: Don't follow symlinks on windows
          Severity: bug
    Classification: Unclassified
                OS: Windows
          Reporter: pesterev_da at skbkontur.ru
          Hardware: PC
            Status: UNCONFIRMED
           Version: 3.3.3
         Component: purge
           Product: Mercurial

Purge is following directory symbolic links on windows and tries to remove
content of symlink, not symlink directory itself. Also if I have several
symlinks pointing to one directory and this symlinks are ignored by .hgignore 
– purge crashes with error: "abort: '<dirName>/*.*'" and exit code is 255.

Expected behaivour: purge removes symlink to directory, not content of real
directory where symlinks points.

Command executed: hg purge --all

Steps to reproduce:
1) Create hg repository
2) Add directory MAIN and create some files inside it
3) Commit changes
4) Add two symlinks pointing to MAIN (command to create symlink is `mklink /D
SYMLINK1 MAIN`)
Here is how your repo must look at this moment:
\
 -- MAIN
  -- someFile1
  -- someFile2
  -- someFile3
 -- SYMLINK1
 -- SYMLINK2
And hg now thinks that you have added someFiles into SYMLINK1 and SYMLINK2.
5) Add into .hgignore lines with SYMLINK1/ and SYMLINK2/, so hg must track only
.hgignore file, files in symlink directories must not be commited.
6) Commit hgignore file
7) Now finally try to purge your repository – purge will remove content from
MAIN folder (but they are not ignored, stop it!) and probably crash.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the Mercurial-devel mailing list