aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2007-12-28 08:19:03 +0000
committerRobin H. Johnson <robbat2@gentoo.org>2007-12-28 08:19:03 +0000
commit33cd99f204403f6f486507d4494c84880e85593c (patch)
treef36834196b1a7b5987b48d3b7bd9110d9b10b80a
parentRemove old extract_user function, replaced by username property of SSHPublicK... (diff)
downloadgitosis-dakkar-33cd99f204403f6f486507d4494c84880e85593c.tar.gz
gitosis-dakkar-33cd99f204403f6f486507d4494c84880e85593c.tar.bz2
gitosis-dakkar-33cd99f204403f6f486507d4494c84880e85593c.zip
Add support for custom perms during repo creation.
-rw-r--r--gitosis/repository.py7
-rw-r--r--gitosis/serve.py8
-rw-r--r--gitosis/test/test_repository.py7
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')