Either inconsistency in "bzr add" vs "bzr mv" or repository on Linux became case-insensitive

Vincent Ladeuil v.ladeuil+lp at free.fr
Fri Oct 9 09:37:21 BST 2009


>>>>> "YB" == Yegor Bryukhov <ybryukhov at gmail.com> writes:

    YB> Hello,

    YB> I have a repository (Linux, ext3) to which at some point
    YB> I added a bunch of files that only differ in case (so I
    YB> have Foo, foo, FOO and may be other combinations).  "bzr
    YB> info" says that this repository is: Standalone tree
    YB> (format: pack-0.92)

    YB> Later I wanted to change the naming convention of those files with
    YB> "bzr mv" (I would still have Foo and FOO and foo) but it won't let me
    YB> on some files, saying that that target file name is already versioned.
    YB> So when I did "bzr add" it behaved case-sensitively but now "bzr mv"
    YB> is not case-sensitive.

That's a bug. Some related ones have been fixed in recent bzr
versions, are you using 2.0.0 ?

    YB> As far as I understand, they are either inconsistently programmed or
    YB> the following happened:
    YB> 1.before those files were added I made a branch on Windows (NTFS)
    YB> 2.after those files were added I merged some changes from that Windows
    YB> branch and it somehow turned my "main" Linux branch into
    YB> case-insensitive.

Branches are case sensitive (in the sense that they treat
the versioned paths as case sensitive strings).

The interactions between branches and working trees (which reside
on file systems and as such have to respect the file system
limitations (case insensitivity being one)) are sometimes a bit
hard to clearly understand (if only because case insensitive file
systems tend to present the file names in different cases under
different usages (from shell (FOO) or in GUI (Foo) for example)).

The intended behavior of bzr is to allow:

- projects that needs to version both 'FOO' and 'foo' as distinct
  files (with the constraint that these projects can't be checked
  out on case insensitive file systems),

- projects were developers use either case sensitive or case
  insensitive file systems and want to use 'FOO' and 'foo' as two
  different names for the same versioned file when working on
  case insensitive file systems.

The later may lead to conflicts in merges if the same file is
added under different cases.

But once you resolve these conflicts you should be fine and bzr
should be able to understand that if you're using a case
insensitive file system and you refer to a versioned 'foo' by
calling it 'FOO' it should do the Right Thing.

You may also encounter some glitches if one of the other tools
you use renames 'Foo' into 'FOO' occasionally as bzr may see that
as a renaming and ask you to confirm it.

If you encounter a different behavior, please file a bug
https://bugs.launchpad.net/bzr/+filebug with a recipe to
reproduce it.

    YB> I could not find a description of _current_ Bazaar
    YB> intended behavior regarding case-sensitivity, so I don't
    YB> know what is actually going on.

Hope that helps,

     Vincent



More information about the bazaar mailing list