diff options
-rw-r--r-- | CHANGELOG | 3 | ||||
-rw-r--r-- | VERSION | 2 | ||||
-rw-r--r-- | lib/gitlab_access.rb | 7 | ||||
-rw-r--r-- | lib/gitlab_net.rb | 5 |
4 files changed, 13 insertions, 4 deletions
@@ -1,3 +1,6 @@ +v4.1.1 + - Send (a selection of) git environment variables while making the API call to `/allowed`, !112 + v4.1.0 - Add support for global custom hooks and chained hook directories (Elan Ruusamäe, Dirk Hörner), !113, !111, !93, !89, #32 - Clear up text with merge request after new branch push (Lisanne Fellinger) @@ -1 +1 @@ -4.1.0 +4.1.1 diff --git a/lib/gitlab_access.rb b/lib/gitlab_access.rb index 34cf4b1..1b2a065 100644 --- a/lib/gitlab_access.rb +++ b/lib/gitlab_access.rb @@ -22,7 +22,12 @@ class GitlabAccess def exec status = GitlabMetrics.measure('check-access:git-receive-pack') do - api.check_access('git-receive-pack', @repo_path, @actor, @changes, @protocol) + env = { + "GIT_ALTERNATE_OBJECT_DIRECTORIES" => ENV["GIT_ALTERNATE_OBJECT_DIRECTORIES"], + "GIT_OBJECT_DIRECTORY" => ENV["GIT_OBJECT_DIRECTORY"] + } + + api.check_access('git-receive-pack', @repo_path, @actor, @changes, @protocol, env: env.to_json) end raise AccessDeniedError, status.message unless status.allowed? diff --git a/lib/gitlab_net.rb b/lib/gitlab_net.rb index ed0b705..8488adc 100644 --- a/lib/gitlab_net.rb +++ b/lib/gitlab_net.rb @@ -15,14 +15,15 @@ class GitlabNet CHECK_TIMEOUT = 5 READ_TIMEOUT = 300 - def check_access(cmd, repo, actor, changes, protocol) + def check_access(cmd, repo, actor, changes, protocol, env: {}) changes = changes.join("\n") unless changes.kind_of?(String) params = { action: cmd, changes: changes, project: sanitize_path(repo), - protocol: protocol + protocol: protocol, + env: env } if actor =~ /\Akey\-\d+\Z/ |