We could add a "umask" directive to the repository's
conf/svnserve.conf, so that people could set svnserve's umask that way
instead of wrapping svnserve in a script which sets the umask.
There is no APR interface to umask(); we'd either have to add one
(along with APR_HAS_UMASK, since the concept is very Unix-specific),
or just write some #ifdef'd Unix-specific code.
The directive would be most useful for tunnel mode, but in some
configurations people might find it a useful sanity check for daemon
mode. Unfortunately, there lies a catch: if on Unix you run svnserve
-d -T (threaded mode), and you have multiple repositories with
different umask directives, you will not get predictable behavior,
because the umask is process-global state.
So, we have two orthogonal sets of options. On the portability axis:
* Decide not to implement this, because it's Unix-specific.
* Add APR interface to umask. (If you recommend this option, let me
know where you think it fits into APR, if possible.)
* Wrap umask code in HAVE_UMASK, and add an AC_CHECK_FUNCS(umask) to
configure.in (we don't have any other AC_CHECK_FUNCS directives
currently). Or, ifdef it some other way. If we go with #2, we
could also do this as a stopgap while we wait for the apr code to
percolate into an Apache release.
On the failure to work properly in threaded mode:
* Decide not to implement this, because of the threaded mode issue.
* Make the umask option apply only to tunnel mode, avoiding the
issue.
* Remove the -T option, so that threaded mode only applies to
systems without APR_HAS_FORK. (Every system which has umask()
also has fork(), I am certain.) I didn't like the -T option in
the first place, so I like this choice, but I'm sure Phillip would
object.
* Undocument the -T option, and call it a debugging aide in the help
output.
* In the svnserve.conf comments, document that "umask" won't work
right with the -T option unless you make the umask consistent
across all repositories served by svnserve.
* Check for the "umask" directive being used in combination with the
-T option, and error out. I don't like this option because it
would be complicated to implement, and because it would preclude
setting the umask consistently across repositories.
* Silently ignore the "umask" directive when used in combination
with the -T option. Again, I don't like the idea of implementing
this, and it doesn't sit right with me.
Comments?
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sun Nov 30 17:14:37 2003