[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