[rfc] Windows symlink support

John Yates jyates at netezza.com
Fri Jan 13 22:01:53 GMT 2006


I would hate to see this suggestion come to fruition.
(Similarly I would hate to see bzr expose hard link
semantics within its tree abstraction.)

The git project has formulated a clean abstraction
of a tree-structured namespace:

  http://www.kernel.org/pub/software/scm/git/docs/#Discussion

They have done this in spite of making not the
slightest peep about git being supported in any
environment other than Linux.

Bzr by contrast professes to want to be a viable
tool in non-*nix environments -- notably Windows --
but tends to develop utterly ad-hoc semantics
based on use-case wishes.

>From the very top of Aaron's wiki page:

  Add support for symlinks to bzr-on-windows, so that
  windows users can collaborate on projects which use
  symlinks in their source trees. 

This seems an ill-thought out use case.  If symlinks
are used in any general way in the source tree such
that any tooling used to build the project needs to
follow those symlinks then in reality that project
has written off developers on Window boxes being
real participants.  Further down the page Aaron
suggests this use case:

  Project FunFoo is started on Linux. For convenience
  in building their code, they add some versioned
  symlinks to their bzr directories. Developer jrandom
  tries to use FunFoo, but discovers some win32-specific
  bugs. He gets a branch of FunFoo using bzr, fixes the
  bugs, commits. The *nix developers merge jrandom's
  fixes without issue. To them, it is not apparent that
  the changes were committed on Win32. 

This seems fanciful.  Is a Windows developer to operate
in such a manner that he nor any tools/scripts/etc that
he might run would need to follow the symlinks?  As I
read the use case the project sounds to be one in the
arch/tla mold... vaguely interested in windows but making
no real commitment thereto.  jrandom seems to be not an
actual project participant but simply a enthusiast who
spots an issue by simple inspection.


Contrary to Aaron's proposal, were I setting up a project
in which I wanted to ensure that Windows developers were
able to contribute I would want to do all that I could to
ensure that my project tree never got polluted by symlinks.

My preference would be for bzr to simply say "No" to
both symlinks and hard links.  Barring that, if bzr
really must version links when hosted on a file system
supporting them then I REALLY want a way to tell bzr that
my project has forbidden links of any ilk.

A developer may create links locally in his tree for any
local hacking he may want to conduct but they cannot be
made into versioned objects.

/john

PS: Is it not the case that if bzr admits link semantics
    into its tree abstraction then it is more or less
    closing the door on leveraging git technology and/or
    any future git convergence?




More information about the bazaar mailing list