Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
heptapod
heptapod
Commits
cc891e6276c5
Commit
52bfd064
authored
Nov 14, 2017
by
Ahmad Sherif
Browse files
Use relative git object paths to construct absolute ones before setting Env
parent
4cdc92eb88fc
Changes
3
Hide whitespace changes
Inline
Side-by-side
lib/api/helpers/internal_helpers.rb
View file @
cc891e62
...
...
@@ -36,6 +36,18 @@ def parse_env
{}
end
def
fix_git_env_repository_paths
(
env
,
repository_path
)
if
obj_dir_relative
=
env
[
'GIT_OBJECT_DIRECTORY_RELATIVE'
].
presence
env
[
'GIT_OBJECT_DIRECTORY'
]
=
File
.
join
(
repository_path
,
obj_dir_relative
)
end
if
alt_obj_dirs_relative
=
env
[
'GIT_ALTERNATE_OBJECT_DIRECTORIES_RELATIVE'
].
presence
env
[
'GIT_ALTERNATE_OBJECT_DIRECTORIES'
]
=
alt_obj_dirs_relative
.
map
{
|
dir
|
File
.
join
(
repository_path
,
dir
)
}
end
env
end
def
log_user_activity
(
actor
)
commands
=
Gitlab
::
GitAccess
::
DOWNLOAD_COMMANDS
...
...
lib/api/internal.rb
View file @
cc891e62
...
...
@@ -19,7 +19,9 @@ class Internal < Grape::API
status
200
# Stores some Git-specific env thread-safely
Gitlab
::
Git
::
Env
.
set
(
parse_env
)
env
=
parse_env
env
=
fix_git_env_repository_paths
(
env
,
repository_path
)
if
project
Gitlab
::
Git
::
Env
.
set
(
env
)
actor
=
if
params
[
:key_id
]
...
...
spec/requests/api/internal_spec.rb
View file @
cc891e62
...
...
@@ -203,18 +203,44 @@
end
context
'with env passed as a JSON'
do
it
'sets env in RequestStore'
do
expect
(
Gitlab
::
Git
::
Env
).
to
receive
(
:set
).
with
({
'GIT_OBJECT_DIRECTORY'
=>
'foo'
,
'GIT_ALTERNATE_OBJECT_DIRECTORIES'
=>
'bar'
})
context
'when relative path envs are not set'
do
it
'sets env in RequestStore'
do
expect
(
Gitlab
::
Git
::
Env
).
to
receive
(
:set
).
with
({
'GIT_OBJECT_DIRECTORY'
=>
'foo'
,
'GIT_ALTERNATE_OBJECT_DIRECTORIES'
=>
'bar'
})
push
(
key
,
project
.
wiki
,
env:
{
GIT_OBJECT_DIRECTORY
:
'foo'
,
GIT_ALTERNATE_OBJECT_DIRECTORIES
:
'bar'
}.
to_json
)
push
(
key
,
project
.
wiki
,
env:
{
GIT_OBJECT_DIRECTORY
:
'foo'
,
GIT_ALTERNATE_OBJECT_DIRECTORIES
:
'bar'
}.
to_json
)
expect
(
response
).
to
have_gitlab_http_status
(
200
)
end
end
expect
(
response
).
to
have_gitlab_http_status
(
200
)
context
'when relative path envs are set'
do
it
'sets env in RequestStore'
do
obj_dir_relative
=
'./objects'
alt_obj_dirs_relative
=
[
'./alt-objects-1'
,
'./alt-objects-2'
]
repo_path
=
project
.
wiki
.
repository
.
path_to_repo
expect
(
Gitlab
::
Git
::
Env
).
to
receive
(
:set
).
with
({
'GIT_OBJECT_DIRECTORY'
=>
File
.
join
(
repo_path
,
obj_dir_relative
),
'GIT_ALTERNATE_OBJECT_DIRECTORIES'
=>
alt_obj_dirs_relative
.
map
{
|
d
|
File
.
join
(
repo_path
,
d
)
},
'GIT_OBJECT_DIRECTORY_RELATIVE'
=>
obj_dir_relative
,
'GIT_ALTERNATE_OBJECT_DIRECTORIES_RELATIVE'
=>
alt_obj_dirs_relative
})
push
(
key
,
project
.
wiki
,
env:
{
GIT_OBJECT_DIRECTORY
:
'foo'
,
GIT_ALTERNATE_OBJECT_DIRECTORIES
:
'bar'
,
GIT_OBJECT_DIRECTORY_RELATIVE
:
obj_dir_relative
,
GIT_ALTERNATE_OBJECT_DIRECTORIES_RELATIVE
:
alt_obj_dirs_relative
}.
to_json
)
expect
(
response
).
to
have_gitlab_http_status
(
200
)
end
end
end
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment