https://bz.mercurial-scm.org/show_bug.cgi?id=5929

            Bug ID: 5929
           Summary: Unable to rename directory (change case) on case
                    insensitive system when using large files
           Product: Mercurial
           Version: 4.6.1
          Hardware: PC
                OS: Windows
            Status: UNCONFIRMED
          Severity: bug
          Priority: wish
         Component: largefiles
          Assignee: bugzi...@mercurial-scm.org
          Reporter: mojca.miklavec.li...@gmail.com
                CC: mercurial-devel@mercurial-scm.org, nato...@gmail.com

This has been tested on both Windows and macOS with case insensitive filesystem
(I did not yet have a chance to test on Linux). Below are steps to reproduce
the problem.

We first create a simple repository:

mkdir TestRepo
cd TestRepo
hg init .
mkdir DirA
touch DirA/hello.txt
touch DirA/world.txt
hg add DirA/hello.txt
hg add --large DirA/world.txt
hg commit

and start from that same repository with a couple of different unsuccessful
approaches in the hope of being able to rename "DirA" into "dira".

# Attempt nr. 1
hg mv DirA dira
  moving DirA/hello.txt to DirA/DirA/hello.txt
  moving .hglf/DirA/world.txt to .hglf/DirA/DirA/world.txt
hg status
  A DirA/DirA/hello.txt
  A DirA/DirA/world.txt
  R DirA/hello.txt
  R DirA/world.txt
hg status -C
  A DirA/DirA/hello.txt
    DirA/hello.txt
  A DirA/DirA/world.txt
    DirA/world.txt
  R DirA/hello.txt
  R DirA/world.txt
hg mv DirA/DirA/* DirA/
hg status
  A DirA/world.txt
  R DirA/DirA/world.txt
hg revert --all
hg status
  A DirA/world.txt
  R DirA/DirA/world.txt

# Attempt nr. 2
hg mv DirA dira1
  moving DirA/hello.txt to dira1/hello.txt
  moving .hglf/DirA/world.txt to .hglf/dira1/DirA/world.txt
hg mv dira1 dira
  moving dira1/hello.txt to dira/hello.txt
  moving .hglf/dira1/DirA/world.txt to .hglf/dira/dira1/DirA/world.txt
hg status
  A dira/dira1/DirA/world.txt
  A dira/hello.txt
  R DirA/hello.txt
  R DirA/world.txt
  R dira1/DirA/world.txt
find .
  ./.hglf
  ./.hglf/dira
  ./.hglf/dira/dira1
  ./.hglf/dira/dira1/DirA
  ./.hglf/dira/dira1/DirA/world.txt
  ./dira
  ./dira/dira1
  ./dira/dira1/DirA
  ./dira/dira1/DirA/world.txt
  ./dira/hello.txt

# Attempt nr. 3 (unrelated test performed on macOS, leading to an error)
hg mv DirA DirA\DirB
  moving DirA/hello.txt to DirADirB/hello.txt
  moving .hglf/DirA/world.txt to .hglf/DirADirB/DirA/world.txt
hg status
  A DirADirB/DirA/world.txt
  A DirADirB/hello.txt
  R DirA/hello.txt
  R DirA/world.txt
find .
  ./DirADirB
  ./DirADirB/DirA
  ./DirADirB/DirA/world.txt
  ./DirADirB/hello.txt
  ./.hglf
  ./.hglf/DirADirB
  ./.hglf/DirADirB/DirA
  ./.hglf/DirADirB/DirA/world.txt
hg status -C
  A DirADirB/DirA/world.txt
    DirA/world.txt
  A DirADirB/hello.txt
    DirA/hello.txt
  R DirA/hello.txt
  R DirA/world.txt
hg mv DirADirB/DirA/* DirA
hg status
  A DirA
  A DirADirB/hello.txt
  R DirA/hello.txt
  R DirA/world.txt
  R DirADirB/DirA/world.txt
hg revert --all
  forgetting .hglf/DirA
  undeleting .hglf/DirA/world.txt
  undeleting DirA/hello.txt
  forgetting DirADirB/hello.txt
  abort: Not a directory: '/path/to/TestRepo/.hglf/DirA/world.txt'


I need to add that after some of these experiments I'm completely unable to
clean up the repository and need to clone the repo first and throw the old one
away. What happens is that mercurial reports some file (large files) to be
untracked. But when I delete them, it reports them as being deleted. If I use
'revert', they go back to untracked status.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

Reply via email to