aboutsummaryrefslogtreecommitdiff
path: root/gitosis/serve.py
diff options
context:
space:
mode:
Diffstat (limited to 'gitosis/serve.py')
-rw-r--r--gitosis/serve.py14
1 files changed, 13 insertions, 1 deletions
diff --git a/gitosis/serve.py b/gitosis/serve.py
index c0b7135..9a91fcb 100644
--- a/gitosis/serve.py
+++ b/gitosis/serve.py
@@ -21,10 +21,12 @@ ALLOW_RE = re.compile("^'/*(?P<path>[a-zA-Z0-9][a-zA-Z0-9@._-]*(/[a-zA-Z0-9][a-z
COMMANDS_READONLY = [
'git-upload-pack',
+ 'git upload-pack',
]
COMMANDS_WRITE = [
'git-receive-pack',
+ 'git receive-pack',
]
class ServingError(Exception):
@@ -62,9 +64,19 @@ def serve(
try:
verb, args = command.split(None, 1)
except ValueError:
- # all known commands take one argument; improve if/when needed
+ # all known "git-foo" commands take one argument; improve
+ # if/when needed
raise UnknownCommandError()
+ if verb == 'git':
+ try:
+ subverb, args = args.split(None, 1)
+ except ValueError:
+ # all known "git foo" commands take one argument; improve
+ # if/when needed
+ raise UnknownCommandError()
+ verb = '%s %s' % (verb, subverb)
+
if (verb not in COMMANDS_WRITE
and verb not in COMMANDS_READONLY):
raise UnknownCommandError()