diff --git a/CHANGELOG b/CHANGELOG index 3bf0d5dc9a9cd5b08bbb7a2f869258515dc3641a..bae860c40115152acafd39a608ed5d5d8465dbf3 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -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) diff --git a/VERSION b/VERSION index ee74734aa2258df77aa09402d55798a1e2e55212..627a3f43a64f9d878a1143f59bea46e1970d0320 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -4.1.0 +4.1.1 diff --git a/lib/gitlab_access.rb b/lib/gitlab_access.rb index 34cf4b1892edd5411b55b3751d0ff2d17c896fa5..1b2a06531b1804040b85dfe003abaefeab04198c 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 ed0b7056adb5887e7a04c7e5c60bee82b8034caf..8488adc354e7eb6fa1341c6192d7a2296cc759f9 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/