BigW Consortium Gitlab
Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gitlab-ce
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Forest Godfrey
gitlab-ce
Commits
0fc361c4
Commit
0fc361c4
authored
Mar 28, 2017
by
Kim "BKC" Carlbäcker
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Use Gitaly for Environment#first_deployment_for
parent
49bdd8d6
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
46 additions
and
12 deletions
+46
-12
repository.rb
app/models/repository.rb
+2
-8
repository.rb
lib/gitlab/git/repository.rb
+15
-0
ref.rb
lib/gitlab/gitaly_client/ref.rb
+10
-0
environment_spec.rb
spec/models/environment_spec.rb
+19
-4
No files found.
app/models/repository.rb
View file @
0fc361c4
...
...
@@ -6,6 +6,8 @@ class Repository
attr_accessor
:path_with_namespace
,
:project
delegate
:ref_name_for_sha
,
to: :raw_repository
CommitError
=
Class
.
new
(
StandardError
)
CreateTreeError
=
Class
.
new
(
StandardError
)
...
...
@@ -700,14 +702,6 @@ class Repository
end
end
def
ref_name_for_sha
(
ref_path
,
sha
)
args
=
%W(
#{
Gitlab
.
config
.
git
.
bin_path
}
for-each-ref --count=1
#{
ref_path
}
--contains
#{
sha
}
)
# Not found -> ["", 0]
# Found -> ["b8d95eb4969eefacb0a58f6a28f6803f8070e7b9 commit\trefs/environments/production/77\n", 0]
Gitlab
::
Popen
.
popen
(
args
,
path_to_repo
).
first
.
split
.
last
end
def
refs_contains_sha
(
ref_type
,
sha
)
args
=
%W(
#{
Gitlab
.
config
.
git
.
bin_path
}
#{
ref_type
}
--contains
#{
sha
}
)
names
=
Gitlab
::
Popen
.
popen
(
args
,
path_to_repo
).
first
...
...
lib/gitlab/git/repository.rb
View file @
0fc361c4
...
...
@@ -452,6 +452,21 @@ module Gitlab
Gitlab
::
Git
::
DiffCollection
.
new
(
diff_patches
(
from
,
to
,
options
,
*
paths
),
options
)
end
# Returns a RefName for a given SHA
def
ref_name_for_sha
(
ref_path
,
sha
)
Gitlab
::
GitalyClient
.
migrate
(
:find_ref_name
)
do
|
is_enabled
|
if
is_enabled
Gitlab
::
GitalyClient
::
Ref
.
find_ref_name
(
self
,
sha
,
ref_path
)
else
args
=
%W(
#{
Gitlab
.
config
.
git
.
bin_path
}
for-each-ref --count=1
#{
ref_path
}
--contains
#{
sha
}
)
# Not found -> ["", 0]
# Found -> ["b8d95eb4969eefacb0a58f6a28f6803f8070e7b9 commit\trefs/environments/production/77\n", 0]
Gitlab
::
Popen
.
popen
(
args
,
@path
).
first
.
split
.
last
end
end
end
# Returns commits collection
#
# Ex.
...
...
lib/gitlab/gitaly_client/ref.rb
View file @
0fc361c4
...
...
@@ -23,6 +23,16 @@ module Gitlab
consume_refs_response
(
stub
.
find_all_tag_names
(
request
),
prefix:
'refs/tags/'
)
end
def
find_ref_name
(
commit_id
,
ref_prefix
)
request
=
Gitaly
::
FindRefNameRequest
.
new
(
repository:
@repository
,
commit_id:
commit_id
,
prefix:
ref_prefix
)
stub
.
find_ref_name
(
request
).
name
end
private
def
consume_refs_response
(
response
,
prefix
:)
...
...
spec/models/environment_spec.rb
View file @
0fc361c4
...
...
@@ -100,12 +100,27 @@ describe Environment, models: true do
let
(
:head_commit
)
{
project
.
commit
}
let
(
:commit
)
{
project
.
commit
.
parent
}
it
'returns deployment id for the environment'
do
expect
(
environment
.
first_deployment_for
(
commit
)).
to
eq
deployment1
context
'Gitaly find_ref_name feature disables'
do
it
'returns deployment id for the environment'
do
expect
(
environment
.
first_deployment_for
(
commit
)).
to
eq
deployment1
end
it
'return nil when no deployment is found'
do
expect
(
environment
.
first_deployment_for
(
head_commit
)).
to
eq
nil
end
end
it
'return nil when no deployment is found'
do
expect
(
environment
.
first_deployment_for
(
head_commit
)).
to
eq
nil
context
'Gitaly find_ref_name feature enabled'
do
before
do
allow
(
Gitlab
::
GitalyClient
).
to
receive
(
:feature_enabled?
).
with
(
:find_ref_name
).
and_return
(
true
)
end
it
'checks that GitalyClient is called'
do
expect
(
Gitlab
::
GitalyClient
::
Ref
).
to
receive
(
:find_ref_name
).
with
(
project
.
repository
.
raw_repository
,
commit
.
id
,
environment
.
ref_path
)
environment
.
first_deployment_for
(
commit
)
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