Unix and Win32 incompatibilities in filenames

John Yates jyates at netezza.com
Mon Aug 27 16:31:04 BST 2007


>    unix  $ bzr ci fle-with-:-colon.txt
>    win32 $ bzr pulll
>    ... oops, the OS will not allow storing the file
>
> Perhaps this issue is already dealt in bzr. I would assume that
> encoding filenames properly with HEX for special characters ensures
> that the repository will work (if moved from Unix to Windows).

I would much prefer a scheme allowing project intentions to be declared
and enforced via properties attached to branches.  If a project expects
developers to work in disparate environments it would be very nice to be
able to capture that intention and to have bzr help avoid nasty surprises.

As a matter of design I prefer an intentional formulation:

  file-system-behavior = Unix \
                         Windows \
                         Macintosh

to a more operational formulation:

  file-system-behavior = case-insensitive \
				 ban('\') \
				 ban('/') \
                         ban(':') \
                         ban('*') \
				 ban('?') \
				 ban('"') \
				 ban('<') \
				 ban('>') \
				 ban('|') \
                         unicode-nfd

But either would be an improvement.

There could well be a place for operational elements.  A project might
want to forbid names with embedded spaces as a matter of policy.

Perhaps the forthcoming pre_commit hooks will make something like this
possible.

/john



More information about the bazaar mailing list