[RFC] symlinks support on win32: what features really needed or bzr?
Alexander Belchenko
bialix at ukr.net
Thu Nov 1 07:24:32 GMT 2007
Martin Pool пишет:
> On 10/30/07, John Arbash Meinel <john at arbash-meinel.com> wrote:
>
>> I'm guessing we don't need to support os.path.realpath() for windows. Unless
>> you want to be able to refer to branches using a symlink. That, to my
>> knowledge, is all we use realpath for. (Which is only really relevant when
>> /path/to/branch is has a symlink in it.)
>>
>> For supporting links inside the working tree, we probably only check whether it
>> *is* a symlink (osutils.file_kind_from_stat_mode), and then os.readlink to see
>> where it points (which we commit.) and then "os.symlink" to create or change a
>> symlink on disk.
>
> I think John's right that we should normally only be reading links in
> the working tree, not dereferencing them. Doing otherwise is probably
> a bug.
>
> It would be kind of nice if we could arrange to use the win32 approach
> for symlinks, maybe for people who have special situations (on a samba
> share?), but at least so we can test them. Maybe you could make all
> the tests for symlinks be run in two scenarios, real and fake
> symlinks. I wouldn't insist on this to merge, it's just an idea.
Good point. I need to think about it.
>> Most code that follows symlinks has a loop of (pseudocode):
>>
>> while is_link(path):
>> path = readlink(path)
>
> Just to be clear, this loop is done in the kernel, not the
> application. If you just open the symlink, you get the ultimate
> target, or an error if any link in the chain is broken, or an error if
> there is a loop.
Thanks for explanation! Now I know symlink kung-fu too. :-)
More information about the bazaar
mailing list