Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
9351f7a5
Commit
9351f7a5
authored
Mar 30, 2018
by
GitLab Bot
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'upstream/master' into ce-to-ee-2018-03-30
parents
c599b642
80b475d5
Changes
21
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
240 additions
and
234 deletions
+240
-234
Gemfile.lock
Gemfile.lock
+1
-1
app/models/ci/artifact_blob.rb
app/models/ci/artifact_blob.rb
+3
-4
app/models/project.rb
app/models/project.rb
+9
-10
app/views/shared/milestones/_top.html.haml
app/views/shared/milestones/_top.html.haml
+3
-2
changelogs/unreleased/ac-pages-port.yml
changelogs/unreleased/ac-pages-port.yml
+5
-0
changelogs/unreleased/add-milestone-path-to-dashboard-milestones-breadcrumb-link.yml
...ilestone-path-to-dashboard-milestones-breadcrumb-link.yml
+5
-0
doc/user/gitlab_com/index.md
doc/user/gitlab_com/index.md
+9
-1
doc/user/project/repository/index.md
doc/user/project/repository/index.md
+3
-2
lib/api/helpers/internal_helpers.rb
lib/api/helpers/internal_helpers.rb
+0
-12
lib/api/internal.rb
lib/api/internal.rb
+1
-2
lib/gitlab/ee_compat_check.rb
lib/gitlab/ee_compat_check.rb
+91
-57
lib/gitlab/git/hook_env.rb
lib/gitlab/git/hook_env.rb
+12
-14
lib/gitlab/git/repository.rb
lib/gitlab/git/repository.rb
+2
-12
lib/gitlab/gitaly_client/util.rb
lib/gitlab/gitaly_client/util.rb
+3
-5
spec/lib/gitlab/git/hook_env_spec.rb
spec/lib/gitlab/git/hook_env_spec.rb
+28
-43
spec/lib/gitlab/git/repository_spec.rb
spec/lib/gitlab/git/repository_spec.rb
+2
-18
spec/lib/gitlab/git/rev_list_spec.rb
spec/lib/gitlab/git/rev_list_spec.rb
+1
-12
spec/lib/gitlab/gitaly_client/util_spec.rb
spec/lib/gitlab/gitaly_client/util_spec.rb
+7
-4
spec/models/ci/artifact_blob_spec.rb
spec/models/ci/artifact_blob_spec.rb
+13
-0
spec/models/project_spec.rb
spec/models/project_spec.rb
+28
-0
spec/requests/api/internal_spec.rb
spec/requests/api/internal_spec.rb
+14
-35
No files found.
Gemfile.lock
View file @
9351f7a5
...
...
@@ -128,7 +128,7 @@ GEM
activesupport (>= 4.0.0)
mime-types (>= 1.16)
cause (0.1)
charlock_holmes (0.7.
5
)
charlock_holmes (0.7.
6
)
childprocess (0.7.0)
ffi (~> 1.0, >= 1.0.11)
chronic (0.10.2)
...
...
app/models/ci/artifact_blob.rb
View file @
9351f7a5
...
...
@@ -36,16 +36,15 @@ module Ci
def
external_url
(
project
,
job
)
return
unless
external_link?
(
job
)
full_path_parts
=
project
.
full_path_components
top_level_group
=
full_path_parts
.
shift
url_project_path
=
project
.
full_path
.
partition
(
'/'
).
last
artifact_path
=
[
'-'
,
*
full_path_parts
,
'-'
,
'-'
,
url_project_path
,
'-'
,
'jobs'
,
job
.
id
,
'artifacts'
,
path
].
join
(
'/'
)
"
#{
p
ages_config
.
protocol
}
://
#{
top_level_group
}
.
#{
pages_config
.
host
}
/
#{
artifact_path
}
"
"
#{
p
roject
.
pages_group_url
}
/
#{
artifact_path
}
"
end
def
external_link?
(
job
)
...
...
app/models/project.rb
View file @
9351f7a5
...
...
@@ -1360,20 +1360,19 @@ class Project < ActiveRecord::Base
Dir
.
exist?
(
public_pages_path
)
end
def
pages_url
subdomain
,
_
,
url_path
=
full_path
.
partition
(
'/'
)
# The hostname always needs to be in downcased
# All web servers convert hostname to lowercase
host
=
"
#{
subdomain
}
.
#{
Settings
.
pages
.
host
}
"
.
downcase
def
pages_group_url
# The host in URL always needs to be downcased
url
=
Gitlab
.
config
.
pages
.
url
.
sub
(
%r{^https?://}
)
do
|
prefix
|
"
#{
prefix
}#{
subdomain
}
."
Gitlab
.
config
.
pages
.
url
.
sub
(
%r{^https?://}
)
do
|
prefix
|
"
#{
prefix
}#{
pages_
subdomain
}
."
end
.
downcase
end
def
pages_url
url
=
pages_group_url
url_path
=
full_path
.
partition
(
'/'
).
last
# If the project path is the same as host, we serve it as group page
return
url
if
host
==
url_path
return
url
if
url
==
"
#{
Settings
.
pages
.
protocol
}
://
#{
url_path
}
"
"
#{
url
}
/
#{
url_path
}
"
end
...
...
app/views/shared/milestones/_top.html.haml
View file @
9351f7a5
-
page_title
milestone
.
title
,
"Milestones"
-
page_title
@milestone
.
title
-
@breadcrumb_link
=
dashboard_milestone_path
(
milestone
.
safe_title
,
title:
milestone
.
title
)
-
group
=
local_assigns
[
:group
]
...
...
@@ -17,7 +18,7 @@
Milestone
#{
milestone
.
title
}
-
if
milestone
.
due_date
||
milestone
.
start_date
%span
.creator
·
&
nbsp;&
middot;
=
milestone_date_range
(
milestone
)
-
if
group
.pull-right
...
...
changelogs/unreleased/ac-pages-port.yml
0 → 100644
View file @
9351f7a5
---
title
:
Add missing port to artifact links
merge_request
:
author
:
type
:
fixed
changelogs/unreleased/add-milestone-path-to-dashboard-milestones-breadcrumb-link.yml
0 → 100644
View file @
9351f7a5
---
title
:
Update dashboard milestones breadcrumb link
merge_request
:
17933
author
:
George Tsiolis
type
:
fixed
doc/user/gitlab_com/index.md
View file @
9351f7a5
...
...
@@ -51,7 +51,7 @@ Below are the settings for [GitLab Pages].
| TLS certificates support| yes | no |
The maximum size of your Pages site is regulated by the artifacts maximum size
which is part of
[
GitLab CI
](
#gitlab-ci
)
.
which is part of
[
GitLab CI
/CD
](
#gitlab-ci-cd
)
.
## GitLab CI/CD
...
...
@@ -61,6 +61,14 @@ Below are the current settings regarding [GitLab CI/CD](../../ci/README.md).
| ----------- | ----------------- | ------------- |
| Artifacts maximum size | 1G | 100M |
## Repository size limit
The maximum size your Git repository is allowed to be including LFS.
| Setting | GitLab.com | Default |
| ----------- | ----------------- | ------------- |
| Repository size including LFS | 10G | Unlimited |
## Shared Runners
Shared Runners on GitLab.com run in [autoscale mode] and powered by
...
...
doc/user/project/repository/index.md
View file @
9351f7a5
...
...
@@ -132,8 +132,9 @@ Use GPG to [sign your commits](gpg_signed_commits/index.md).
## Repository size
In GitLab.com, your repository size limit it 10GB. For other instances,
the repository size is limited by your system administrators.
On GitLab.com, your
[
repository size limit is 10GB
](
../../gitlab_com/index.md#repository-size-limit
)
(including LFS). For other instances, the repository size is limited by your
system administrators.
You can also
[
reduce a repository size using Git
](
reducing_the_repo_size_using_git.md
)
.
...
...
lib/api/helpers/internal_helpers.rb
View file @
9351f7a5
...
...
@@ -29,18 +29,6 @@ module API
{}
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 @
9351f7a5
...
...
@@ -21,8 +21,7 @@ module API
# Stores some Git-specific env thread-safely
env
=
parse_env
env
=
fix_git_env_repository_paths
(
env
,
repository_path
)
if
project
Gitlab
::
Git
::
Env
.
set
(
env
)
Gitlab
::
Git
::
HookEnv
.
set
(
gl_repository
,
env
)
if
project
actor
=
if
params
[
:key_id
]
...
...
lib/gitlab/ee_compat_check.rb
View file @
9351f7a5
This diff is collapsed.
Click to expand it.
lib/gitlab/git/env.rb
→
lib/gitlab/git/
hook_
env.rb
View file @
9351f7a5
...
...
@@ -3,37 +3,39 @@
module
Gitlab
module
Git
# Ephemeral (per request) storage for environment variables that some Git
# commands
may need
.
# commands
need during internal API calls made from Git push hooks
.
#
# For example, in pre-receive hooks, new objects are put in a temporary
# $GIT_OBJECT_DIRECTORY. Without it set, the new objects cannot be retrieved
# (this would break push rules for instance).
#
# This class is thread-safe via RequestStore.
class
Env
class
Hook
Env
WHITELISTED_VARIABLES
=
%w[
GIT_OBJECT_DIRECTORY
GIT_OBJECT_DIRECTORY_RELATIVE
GIT_ALTERNATE_OBJECT_DIRECTORIES
GIT_ALTERNATE_OBJECT_DIRECTORIES_RELATIVE
]
.
freeze
def
self
.
set
(
env
)
def
self
.
set
(
gl_repository
,
env
)
return
unless
RequestStore
.
active?
RequestStore
.
store
[
:gitlab_git_env
]
=
whitelist_git_env
(
env
)
raise
"missing gl_repository"
if
gl_repository
.
blank?
RequestStore
.
store
[
:gitlab_git_env
]
||=
{}
RequestStore
.
store
[
:gitlab_git_env
][
gl_repository
]
=
whitelist_git_env
(
env
)
end
def
self
.
all
def
self
.
all
(
gl_repository
)
return
{}
unless
RequestStore
.
active?
RequestStore
.
fetch
(
:gitlab_git_env
)
{
{}
}
h
=
RequestStore
.
fetch
(
:gitlab_git_env
)
{
{}
}
h
.
fetch
(
gl_repository
,
{})
end
def
self
.
to_env_hash
def
self
.
to_env_hash
(
gl_repository
)
env
=
{}
all
.
compact
.
each
do
|
key
,
value
|
all
(
gl_repository
)
.
compact
.
each
do
|
key
,
value
|
value
=
value
.
join
(
File
::
PATH_SEPARATOR
)
if
value
.
is_a?
(
Array
)
env
[
key
.
to_s
]
=
value
end
...
...
@@ -41,10 +43,6 @@ module Gitlab
env
end
def
self
.
[]
(
key
)
all
[
key
]
end
def
self
.
whitelist_git_env
(
env
)
env
.
select
{
|
key
,
_
|
WHITELISTED_VARIABLES
.
include?
(
key
.
to_s
)
}.
with_indifferent_access
end
...
...
lib/gitlab/git/repository.rb
View file @
9351f7a5
...
...
@@ -1759,21 +1759,11 @@ module Gitlab
end
def
alternate_object_directories
relative_paths
=
relative_object_directories
if
relative_paths
.
any?
relative_paths
.
map
{
|
d
|
File
.
join
(
path
,
d
)
}
else
absolute_object_directories
.
flat_map
{
|
d
|
d
.
split
(
File
::
PATH_SEPARATOR
)
}
end
relative_object_directories
.
map
{
|
d
|
File
.
join
(
path
,
d
)
}
end
def
relative_object_directories
Gitlab
::
Git
::
Env
.
all
.
values_at
(
*
ALLOWED_OBJECT_RELATIVE_DIRECTORIES_VARIABLES
).
flatten
.
compact
end
def
absolute_object_directories
Gitlab
::
Git
::
Env
.
all
.
values_at
(
*
ALLOWED_OBJECT_DIRECTORIES_VARIABLES
).
flatten
.
compact
Gitlab
::
Git
::
HookEnv
.
all
(
gl_repository
).
values_at
(
*
ALLOWED_OBJECT_RELATIVE_DIRECTORIES_VARIABLES
).
flatten
.
compact
end
# Get the content of a blob for a given commit. If the blob is a commit
...
...
lib/gitlab/gitaly_client/util.rb
View file @
9351f7a5
...
...
@@ -3,11 +3,9 @@ module Gitlab
module
Util
class
<<
self
def
repository
(
repository_storage
,
relative_path
,
gl_repository
)
git_object_directory
=
Gitlab
::
Git
::
Env
[
'GIT_OBJECT_DIRECTORY_RELATIVE'
].
presence
||
Gitlab
::
Git
::
Env
[
'GIT_OBJECT_DIRECTORY'
].
presence
git_alternate_object_directories
=
Array
.
wrap
(
Gitlab
::
Git
::
Env
[
'GIT_ALTERNATE_OBJECT_DIRECTORIES_RELATIVE'
]).
presence
||
Array
.
wrap
(
Gitlab
::
Git
::
Env
[
'GIT_ALTERNATE_OBJECT_DIRECTORIES'
]).
flat_map
{
|
d
|
d
.
split
(
File
::
PATH_SEPARATOR
)
}
git_env
=
Gitlab
::
Git
::
HookEnv
.
all
(
gl_repository
)
git_object_directory
=
git_env
[
'GIT_OBJECT_DIRECTORY_RELATIVE'
].
presence
git_alternate_object_directories
=
Array
.
wrap
(
git_env
[
'GIT_ALTERNATE_OBJECT_DIRECTORIES_RELATIVE'
])
Gitaly
::
Repository
.
new
(
storage_name:
repository_storage
,
...
...
spec/lib/gitlab/git/env_spec.rb
→
spec/lib/gitlab/git/
hook_
env_spec.rb
View file @
9351f7a5
require
'spec_helper'
describe
Gitlab
::
Git
::
Env
do
describe
Gitlab
::
Git
::
HookEnv
do
let
(
:gl_repository
)
{
'project-123'
}
describe
".set"
do
context
'with RequestStore.store disabled'
do
before
do
...
...
@@ -8,9 +10,9 @@ describe Gitlab::Git::Env do
end
it
'does not store anything'
do
described_class
.
set
(
GIT_OBJECT_DIRECTORY
:
'foo'
)
described_class
.
set
(
gl_repository
,
GIT_OBJECT_DIRECTORY_RELATIVE
:
'foo'
)
expect
(
described_class
.
all
).
to
be_empty
expect
(
described_class
.
all
(
gl_repository
)
).
to
be_empty
end
end
...
...
@@ -21,15 +23,19 @@ describe Gitlab::Git::Env do
it
'whitelist some `GIT_*` variables and stores them using RequestStore'
do
described_class
.
set
(
GIT_OBJECT_DIRECTORY
:
'foo'
,
GIT_ALTERNATE_OBJECT_DIRECTORIES
:
'bar'
,
gl_repository
,
GIT_OBJECT_DIRECTORY_RELATIVE
:
'foo'
,
GIT_ALTERNATE_OBJECT_DIRECTORIES_RELATIVE
:
'bar'
,
GIT_EXEC_PATH
:
'baz'
,
PATH
:
'~/.bin:/bin'
)
expect
(
described_class
[
:GIT_OBJECT_DIRECTORY
]).
to
eq
(
'foo'
)
expect
(
described_class
[
:GIT_ALTERNATE_OBJECT_DIRECTORIES
]).
to
eq
(
'bar'
)
expect
(
described_class
[
:GIT_EXEC_PATH
]).
to
be_nil
expect
(
described_class
[
:bar
]).
to
be_nil
git_env
=
described_class
.
all
(
gl_repository
)
expect
(
git_env
[
:GIT_OBJECT_DIRECTORY_RELATIVE
]).
to
eq
(
'foo'
)
expect
(
git_env
[
:GIT_ALTERNATE_OBJECT_DIRECTORIES_RELATIVE
]).
to
eq
(
'bar'
)
expect
(
git_env
[
:GIT_EXEC_PATH
]).
to
be_nil
expect
(
git_env
[
:PATH
]).
to
be_nil
expect
(
git_env
[
:bar
]).
to
be_nil
end
end
end
...
...
@@ -39,14 +45,15 @@ describe Gitlab::Git::Env do
before
do
allow
(
RequestStore
).
to
receive
(
:active?
).
and_return
(
true
)
described_class
.
set
(
GIT_OBJECT_DIRECTORY
:
'foo'
,
GIT_ALTERNATE_OBJECT_DIRECTORIES
:
[
'bar'
])
gl_repository
,
GIT_OBJECT_DIRECTORY_RELATIVE
:
'foo'
,
GIT_ALTERNATE_OBJECT_DIRECTORIES_RELATIVE
:
[
'bar'
])
end
it
'returns an env hash'
do
expect
(
described_class
.
all
).
to
eq
({
'GIT_OBJECT_DIRECTORY'
=>
'foo'
,
'GIT_ALTERNATE_OBJECT_DIRECTORIES'
=>
[
'bar'
]
expect
(
described_class
.
all
(
gl_repository
)
).
to
eq
({
'GIT_OBJECT_DIRECTORY
_RELATIVE
'
=>
'foo'
,
'GIT_ALTERNATE_OBJECT_DIRECTORIES
_RELATIVE
'
=>
[
'bar'
]
})
end
end
...
...
@@ -56,8 +63,8 @@ describe Gitlab::Git::Env do
context
'with RequestStore.store enabled'
do
using
RSpec
::
Parameterized
::
TableSyntax
let
(
:key
)
{
'GIT_OBJECT_DIRECTORY'
}
subject
{
described_class
.
to_env_hash
}
let
(
:key
)
{
'GIT_OBJECT_DIRECTORY
_RELATIVE
'
}
subject
{
described_class
.
to_env_hash
(
gl_repository
)
}
where
(
:input
,
:output
)
do
nil
|
nil
...
...
@@ -70,7 +77,7 @@ describe Gitlab::Git::Env do
with_them
do
before
do
allow
(
RequestStore
).
to
receive
(
:active?
).
and_return
(
true
)
described_class
.
set
(
key
.
to_sym
=>
input
)
described_class
.
set
(
gl_repository
,
key
.
to_sym
=>
input
)
end
it
'puts the right value in the hash'
do
...
...
@@ -84,47 +91,25 @@ describe Gitlab::Git::Env do
end
end
describe
".[]"
do
context
'with RequestStore.store enabled'
do
before
do
allow
(
RequestStore
).
to
receive
(
:active?
).
and_return
(
true
)
end
before
do
described_class
.
set
(
GIT_OBJECT_DIRECTORY
:
'foo'
,
GIT_ALTERNATE_OBJECT_DIRECTORIES
:
'bar'
)
end
it
'returns a stored value for an existing key'
do
expect
(
described_class
[
:GIT_OBJECT_DIRECTORY
]).
to
eq
(
'foo'
)
end
it
'returns nil for an non-existing key'
do
expect
(
described_class
[
:foo
]).
to
be_nil
end
end
end
describe
'thread-safety'
do
context
'with RequestStore.store enabled'
do
before
do
allow
(
RequestStore
).
to
receive
(
:active?
).
and_return
(
true
)
described_class
.
set
(
GIT_OBJECT_DIRECTORY
:
'foo'
)
described_class
.
set
(
gl_repository
,
GIT_OBJECT_DIRECTORY_RELATIVE
:
'foo'
)
end
it
'is thread-safe'
do
another_thread
=
Thread
.
new
do
described_class
.
set
(
GIT_OBJECT_DIRECTORY
:
'bar'
)
described_class
.
set
(
gl_repository
,
GIT_OBJECT_DIRECTORY_RELATIVE
:
'bar'
)
Thread
.
stop
described_class
[
:GIT_OBJECT_DIRECTORY
]
described_class
.
all
(
gl_repository
)[
:GIT_OBJECT_DIRECTORY_RELATIVE
]
end
# Ensure another_thread runs first
sleep
0.1
until
another_thread
.
stop?
expect
(
described_class
[
:GIT_OBJECT_DIRECTORY
]).
to
eq
(
'foo'
)
expect
(
described_class
.
all
(
gl_repository
)[
:GIT_OBJECT_DIRECTORY_RELATIVE
]).
to
eq
(
'foo'
)
another_thread
.
run
expect
(
another_thread
.
value
).
to
eq
(
'bar'
)
...
...
spec/lib/gitlab/git/repository_spec.rb
View file @
9351f7a5
...
...
@@ -120,7 +120,7 @@ describe Gitlab::Git::Repository, seed_helper: true do
describe
'alternates keyword argument'
do
context
'with no Git env stored'
do
before
do
allow
(
Gitlab
::
Git
::
Env
).
to
receive
(
:all
).
and_return
({})
allow
(
Gitlab
::
Git
::
Hook
Env
).
to
receive
(
:all
).
and_return
({})
end
it
"is passed an empty array"
do
...
...
@@ -132,7 +132,7 @@ describe Gitlab::Git::Repository, seed_helper: true do
context
'with absolute and relative Git object dir envvars stored'
do
before
do
allow
(
Gitlab
::
Git
::
Env
).
to
receive
(
:all
).
and_return
({
allow
(
Gitlab
::
Git
::
Hook
Env
).
to
receive
(
:all
).
and_return
({
'GIT_OBJECT_DIRECTORY_RELATIVE'
=>
'./objects/foo'
,
'GIT_ALTERNATE_OBJECT_DIRECTORIES_RELATIVE'
=>
[
'./objects/bar'
,
'./objects/baz'
],
'GIT_OBJECT_DIRECTORY'
=>
'ignored'
,
...
...
@@ -148,22 +148,6 @@ describe Gitlab::Git::Repository, seed_helper: true do
repository
.
rugged
end
end
context
'with only absolute Git object dir envvars stored'
do
before
do
allow
(
Gitlab
::
Git
::
Env
).
to
receive
(
:all
).
and_return
({
'GIT_OBJECT_DIRECTORY'
=>
'foo'
,
'GIT_ALTERNATE_OBJECT_DIRECTORIES'
=>
%w[bar baz]
,
'GIT_OTHER'
=>
'another_env'
})
end
it
"is passed the absolute object dir envvars as is"
do
expect
(
Rugged
::
Repository
).
to
receive
(
:new
).
with
(
repository
.
path
,
alternates:
%w[foo bar baz]
)
repository
.
rugged
end
end
end
end
...
...
spec/lib/gitlab/git/rev_list_spec.rb
View file @
9351f7a5
...
...
@@ -3,17 +3,6 @@ require 'spec_helper'
describe
Gitlab
::
Git
::
RevList
do
let
(
:repository
)
{
create
(
:project
,
:repository
).
repository
.
raw
}
let
(
:rev_list
)
{
described_class
.
new
(
repository
,
newrev:
'newrev'
)
}
let
(
:env_hash
)
do
{
'GIT_OBJECT_DIRECTORY'
=>
'foo'
,
'GIT_ALTERNATE_OBJECT_DIRECTORIES'
=>
'bar'
}
end
let
(
:command_env
)
{
{
'GIT_ALTERNATE_OBJECT_DIRECTORIES'
=>
'foo:bar'
}
}
before
do
allow
(
Gitlab
::
Git
::
Env
).
to
receive
(
:all
).
and_return
(
env_hash
)
end
def
args_for_popen
(
args_list
)
[
Gitlab
.
config
.
git
.
bin_path
,
'rev-list'
,
*
args_list
]
...
...
@@ -23,7 +12,7 @@ describe Gitlab::Git::RevList do
params
=
[
args_for_popen
(
additional_args
),
repository
.
path
,
command_env
,
{}
,
hash_including
(
lazy_block:
with_lazy_block
?
anything
:
nil
)
]
...
...
spec/lib/gitlab/gitaly_client/util_spec.rb
View file @
9351f7a5
...
...
@@ -7,16 +7,19 @@ describe Gitlab::GitalyClient::Util do
let
(
:gl_repository
)
{
'project-1'
}
let
(
:git_object_directory
)
{
'.git/objects'
}
let
(
:git_alternate_object_directory
)
{
[
'/dir/one'
,
'/dir/two'
]
}
let
(
:git_env
)
do
{
'GIT_OBJECT_DIRECTORY_RELATIVE'
=>
git_object_directory
,
'GIT_ALTERNATE_OBJECT_DIRECTORIES_RELATIVE'
=>
git_alternate_object_directory
}
end
subject
do
described_class
.
repository
(
repository_storage
,
relative_path
,
gl_repository
)
end
it
'creates a Gitaly::Repository with the given data'
do
allow
(
Gitlab
::
Git
::
Env
).
to
receive
(
:[]
).
with
(
'GIT_OBJECT_DIRECTORY_RELATIVE'
)
.
and_return
(
git_object_directory
)
allow
(
Gitlab
::
Git
::
Env
).
to
receive
(
:[]
).
with
(
'GIT_ALTERNATE_OBJECT_DIRECTORIES_RELATIVE'
)
.
and_return
(
git_alternate_object_directory
)
allow
(
Gitlab
::
Git
::
HookEnv
).
to
receive
(
:all
).
with
(
gl_repository
).
and_return
(
git_env
)
expect
(
subject
).
to
be_a
(
Gitaly
::
Repository
)
expect
(
subject
.
storage_name
).
to
eq
(
repository_storage
)
...
...
spec/models/ci/artifact_blob_spec.rb
View file @
9351f7a5
...
...
@@ -65,6 +65,19 @@ describe Ci::ArtifactBlob do
expect
(
url
).
not_to
be_nil
expect
(
url
).
to
eq
(
"http://
#{
project
.
namespace
.
path
}
.
#{
Gitlab
.
config
.
pages
.
host
}
/-/
#{
project
.
path
}
/-/jobs/
#{
build
.
id
}
/artifacts/
#{
path
}
"
)
end
context
'when port is configured'
do
let
(
:port
)
{
1234
}
it
'returns an URL with port number'
do
allow
(
Gitlab
.
config
.
pages
).
to
receive
(
:url
).
and_return
(
"
#{
Gitlab
.
config
.
pages
.
url
}
:
#{
port
}
"
)
url
=
subject
.
external_url
(
build
.
project
,
build
)
expect
(
url
).
not_to
be_nil
expect
(
url
).
to
eq
(
"http://
#{
project
.
namespace
.
path
}
.
#{
Gitlab
.
config
.
pages
.
host
}
:
#{
port
}
/-/
#{
project
.
path
}
/-/jobs/
#{
build
.
id
}
/artifacts/
#{
path
}
"
)
end
end
end
end
...
...
spec/models/project_spec.rb
View file @
9351f7a5
...
...
@@ -1398,6 +1398,34 @@ describe Project do
end
end
describe
'#pages_group_url'
do
let
(
:group
)
{
create
:group
,
name:
group_name
}
let
(
:project
)
{
create
:project
,
namespace:
group
,
name:
project_name
}
let
(
:domain
)
{
'Example.com'
}
let
(
:port
)
{
1234
}
subject
{
project
.
pages_group_url
}
before
do
allow
(
Settings
.
pages
).
to
receive
(
:host
).
and_return
(
domain
)
allow
(
Gitlab
.
config
.
pages
).
to
receive
(
:url
).
and_return
(
"http://example.com:
#{
port
}
"
)
end
context
'group page'
do
let
(
:group_name
)
{
'Group'
}
let
(
:project_name
)
{
'group.example.com'
}
it
{
is_expected
.
to
eq
(
"http://group.example.com:
#{
port
}
"
)
}
end
context
'project page'
do
let
(
:group_name
)
{
'Group'
}
let
(
:project_name
)
{
'Project'
}
it
{
is_expected
.
to
eq
(
"http://group.example.com:
#{
port
}
"
)
}
end
end
describe
'.search'
do
let
(
:project
)
{
create
(
:project
,
description:
'kitten mittens'
)
}
...
...
spec/requests/api/internal_spec.rb
View file @
9351f7a5
...
...
@@ -251,44 +251,23 @@ describe API::Internal do
end
context
'with env passed as a JSON'
do
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
)
let
(
:gl_repository
)
{
project
.
gl_repository
(
is_wiki:
true
)
}
expect
(
response
).
to
have_gitlab_http_status
(
200
)
end
end
it
'sets env in RequestStore'
do
obj_dir_relative
=
'./objects'
alt_obj_dirs_relative
=
[
'./alt-objects-1'
,
'./alt-objects-2'
]
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
(
Gitlab
::
Git
::
HookEnv
).
to
receive
(
:set
).
with
(
gl_repository
,
{
'GIT_OBJECT_DIRECTORY_RELATIVE'
=>
obj_dir_relative
,
'GIT_ALTERNATE_OBJECT_DIRECTORIES_RELATIVE'
=>
alt_obj_dirs_relative
})
expect
(
response
).
to
have_gitlab_http_status
(
200
)
end
push
(
key
,
project
.
wiki
,
env:
{
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
...
...
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