[darcs-devel] Case sensitivity, permissions, symlinks etc

Ian Lynagh igloo at earth.li
Mon Apr 11 16:34:11 PDT 2005


Hi all,

When importing the kernel I'm getting

    The following files are already in the repository;
    note that to ensure portability we don't allow
    files that differ only in case:
    ./net/ipv6/netfilter/ip6t_mark.c
    ./net/ipv4/netfilter/ipt_tos.c
    ./net/ipv4/netfilter/ipt_tcpmss.c
    ./net/ipv4/netfilter/ipt_mark.c
    ./net/ipv4/netfilter/ipt_ecn.c
    ./net/ipv4/netfilter/ipt_dscp.c
    ./net/ipv4/netfilter/ipt_connmark.c
    ./include/linux/netfilter_ipv6/ip6t_mark.h
    ./include/linux/netfilter_ipv4/ipt_tos.h
    ./include/linux/netfilter_ipv4/ipt_tcpmss.h
    ./include/linux/netfilter_ipv4/ipt_mark.h
    ./include/linux/netfilter_ipv4/ipt_ecn.h
    ./include/linux/netfilter_ipv4/ipt_dscp.h
    ./include/linux/netfilter_ipv4/ipt_connmark.h

e.g. the first case is:

./net/ipv6/netfilter/ip6t_MARK.c
./net/ipv6/netfilter/ip6t_mark.c

I've been meaning to bring this up for a while; I don't think we should
be forbidding the user from doing things just because (at least, this is
the only reason that I remember seeing) we can't guarantee it working
out perfectly in all cases. This includes case sensitivity (where it
would break if someone checks it out on a case insensitive FS), symlinks
(breaks if someone doesn't have an OS/FS that supports symlinks) and
permissions (might not mean the same thing everywhere).

In the case-sensitivity and symlinks cases I think it should suffice to
give the user warnings and have a setting in the preferences for whether
they are allowed in this repo. Getting a patch which would use an
unavailable feature should obviously fail, but we will need to cope with
getting one patch that we couldn't cope with followed by another that
fixes the problem.

Permissions are a little more troublesome. A proper solution might
require giving files a "darcs permission" which each checkout maps to FS
permissions as it sees fit, so a file with darcs permission "secret"
might be user:igloo,group:trustedpeople,mode:640 for me but
user:droundy,group:users,mode:600 for David.

For at least one seemingly common would-be use-case (revision control of
/etc on the same machine, perhaps backed up onto another machine into a
directory other people can't get to anyway so it doesn't matter if the
permissions are too lax) just treating it as the other cases and
simply tracking the permission should work, though.


Thanks
Ian





More information about the darcs-devel mailing list