summaryrefslogtreecommitdiff
path: root/lib/gitlab_shell.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab_shell.rb')
-rw-r--r--lib/gitlab_shell.rb15
1 files changed, 12 insertions, 3 deletions
diff --git a/lib/gitlab_shell.rb b/lib/gitlab_shell.rb
index fbbc0da..243c629 100644
--- a/lib/gitlab_shell.rb
+++ b/lib/gitlab_shell.rb
@@ -38,7 +38,7 @@ class GitlabShell
end
args = Shellwords.shellwords(origin_cmd)
- parse_cmd(args)
+ args = parse_cmd(args)
if GIT_COMMANDS.include?(args.first)
GitlabMetrics.measure('verify-access') { verify_access }
@@ -70,10 +70,17 @@ class GitlabShell
protected
def parse_cmd(args)
- @command = args.first
+ # Handle Git for Windows 2.14 using "git upload-pack" instead of git-upload-pack
+ if args.length == 3 && args.first == 'git'
+ @command = "git-#{args[1]}"
+ args = [@command, args.last]
+ else
+ @command = args.first
+ end
+
@git_access = @command
- return if API_COMMANDS.include?(@command)
+ return args if API_COMMANDS.include?(@command)
raise DisallowedCommandError unless GIT_COMMANDS.include?(@command)
@@ -93,6 +100,8 @@ class GitlabShell
raise DisallowedCommandError unless args.count == 2
@repo_name = args.last
end
+
+ args
end
def verify_access