From b391399176062df4342747bd575e8a2803cf51a5 Mon Sep 17 00:00:00 2001 From: Tommi Virtanen Date: Mon, 31 Dec 2007 23:18:10 +0200 Subject: [PATCH] Add git-archive --remote= support to gitosis-serve. Now read access implies ability to grab archives remotely. To allow that through git-daemon (for symmetricality), run "git config --system daemon.uploadarch true". --- gitosis/serve.py | 2 ++ gitosis/test/test_serve.py | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/gitosis/serve.py b/gitosis/serve.py index 16165e2..fdfea53 100644 --- a/gitosis/serve.py +++ b/gitosis/serve.py @@ -22,6 +22,8 @@ ALLOW_RE = re.compile("^'/*(?P[a-zA-Z0-9][a-zA-Z0-9@._-]*(/[a-zA-Z0-9][a-z COMMANDS_READONLY = [ 'git-upload-pack', 'git upload-pack', + 'git-upload-archive', + 'git upload-archive', ] COMMANDS_WRITE = [ diff --git a/gitosis/test/test_serve.py b/gitosis/test/test_serve.py index 9884694..88ce474 100644 --- a/gitosis/test/test_serve.py +++ b/gitosis/test/test_serve.py @@ -239,6 +239,23 @@ def test_read_inits_if_needed(): eq(os.listdir(repositories), ['foo.git']) assert os.path.isfile(os.path.join(repositories, 'foo.git', 'HEAD')) + +def test_simple_read_archive(): + tmp = util.maketemp() + repository.init(os.path.join(tmp, 'foo.git')) + cfg = RawConfigParser() + cfg.add_section('gitosis') + cfg.set('gitosis', 'repositories', tmp) + cfg.add_section('group foo') + cfg.set('group foo', 'members', 'jdoe') + cfg.set('group foo', 'readonly', 'foo') + got = serve.serve( + cfg=cfg, + user='jdoe', + command="git upload-archive 'foo'", + ) + eq(got, "git upload-archive '%s/foo.git'" % tmp) + def test_simple_write_dash(): tmp = util.maketemp() repository.init(os.path.join(tmp, 'foo.git'))