From 33cd99f204403f6f486507d4494c84880e85593c Mon Sep 17 00:00:00 2001 From: "Robin H. Johnson" Date: Fri, 28 Dec 2007 08:19:03 +0000 Subject: Add support for custom perms during repo creation. --- gitosis/repository.py | 7 ++++++- gitosis/serve.py | 8 ++++++-- gitosis/test/test_repository.py | 7 +++++++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/gitosis/repository.py b/gitosis/repository.py index db74046..1e27b2a 100644 --- a/gitosis/repository.py +++ b/gitosis/repository.py @@ -21,6 +21,7 @@ def init( path, template=None, _git=None, + mode=0750, ): """ Create a git repository at C{path} (if missing). @@ -34,11 +35,15 @@ def init( @param template: Template directory, to pass to C{git init}. @type template: str + + @param mode: Permissions for the new reposistory + + @type mode: int """ if _git is None: _git = 'git' - util.mkdir(path, 0750) + util.mkdir(path, mode) args = [ _git, '--git-dir=.', diff --git a/gitosis/serve.py b/gitosis/serve.py index c473de5..9718758 100644 --- a/gitosis/serve.py +++ b/gitosis/serve.py @@ -9,6 +9,7 @@ import logging import sys, os, re from gitosis import access +from gitosis import configutil from gitosis import repository from gitosis import app from gitosis import util @@ -107,11 +108,14 @@ def serve(cfg, user, command): # create leading directories path = topdir + newdirmode = configutil.get_default(cfg, 'repo %s' % (relpath, ), 'dirmode', None) + if newdirmode is None: + newdirmode = configutil.get_default(cfg, 'gitosis', 'dirmode', 0750) for segment in repopath.split(os.sep)[:-1]: path = os.path.join(path, segment) - util.mkdir(path, 0750) + util.mkdir(path, newdirmode) - repository.init(path=fullpath) + repository.init(path=fullpath, mode=newdirmode) run_hook.build_reposistory_data(cfg) # put the verb back together with the new path diff --git a/gitosis/test/test_repository.py b/gitosis/test/test_repository.py index 4890c47..50e2661 100644 --- a/gitosis/test/test_repository.py +++ b/gitosis/test/test_repository.py @@ -36,6 +36,13 @@ def test_init_exist_dir(): check_mode(path, 0710, is_dir=True) check_bare(path) +def test_init_custom_perm(): + tmp = maketemp() + path = os.path.join(tmp, 'repo.git') + repository.init(path, mode=0711) + check_mode(path, 0711, is_dir=True) + check_bare(path) + def test_init_exist_git(): tmp = maketemp() path = os.path.join(tmp, 'repo.git') -- cgit v1.2.3