From: Junio C Hamano Date: Sat, 12 Apr 2008 00:53:36 GMT Subject: Re: [PATCH] Add two core.sharedRepository options: group-readable and world-readable Message-ID: <7vfxtrnban.fsf@gitster.siamese.dyndns.org> In-Reply-To: <20080411140916.GA30667@zakalwe.fi> Heikki Orsila writes: > diff --git a/cache.h b/cache.h > index 2a1e7ec..4af6d62 100644 > --- a/cache.h > +++ b/cache.h > @@ -474,10 +474,14 @@ static inline void hashclr(unsigned char *hash) > > int git_mkstemp(char *path, size_t n, const char *template); > > +/* Warning: enum sharedrepo item order should not be changed since it will > + * break backwards compatibility. */ That's not a "Warning" (which tends to mean "you can violate this if you know what you are doing"), but should be stronger than that. Something like (also notice the multi-line comment style --- the first line ends with "/*\n"): /* * NOTE NOTE NOTE!! * * Do not reorder this list; numerically written core.sharedrepository * in config files have always been valid, and you would break existing * repositories if you move these around. */ > enum sharedrepo { > PERM_UMASK = 0, > PERM_GROUP, > - PERM_EVERYBODY > + PERM_EVERYBODY, > + PERM_GROUP_READABLE, > + PERM_WORLD_READABLE, > }; But I have to wonder if this patch is necessary. Neither am I convinced if this set is sufficient. + /* * PERM_GROUP_READABLE: g+r + * PERM_GROUP: g+rw + * PERM_WORLD_READABLE: g+r, o+r + * PERM_EVERYBODY: g+rw, o+r + */ For example, you may want to enforce "ug+rw,o=" in a repository. How would you do that? Perhaps if you really wanted to have such a fine grained control, you would be better off defining core.sharedrepository as a set/unset pair? core.sharedrepository = 0660,007 ;# ug+rw,o-rwx Or even stronger "set to this bit pattern"? core.sharedrepository = 0660 ;# ug=rw,o= (I think you would need to flip executable bit for directories if you go this route).