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
713c7fa9
Commit
713c7fa9
authored
May 02, 2018
by
Zeger-Jan van de Weg
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Client implementation GetRawChanges
Part of
https://gitlab.com/gitlab-org/gitaly/issues/1138
parent
40655a48
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
80 additions
and
34 deletions
+80
-34
lib/gitlab/git/raw_diff_change.rb
lib/gitlab/git/raw_diff_change.rb
+9
-1
lib/gitlab/git/repository.rb
lib/gitlab/git/repository.rb
+19
-8
lib/gitlab/gitaly_client/repository_service.rb
lib/gitlab/gitaly_client/repository_service.rb
+6
-0
spec/lib/gitlab/git/repository_spec.rb
spec/lib/gitlab/git/repository_spec.rb
+35
-25
spec/lib/gitlab/gitaly_client/repository_service_spec.rb
spec/lib/gitlab/gitaly_client/repository_service_spec.rb
+11
-0
No files found.
lib/gitlab/git/raw_diff_change.rb
View file @
713c7fa9
...
...
@@ -6,8 +6,16 @@ module Gitlab
attr_reader
:blob_id
,
:blob_size
,
:old_path
,
:new_path
,
:operation
def
initialize
(
raw_change
)
if
raw_change
.
is_a?
(
Gitaly
::
GetRawChangesResponse
::
RawChange
)
@blob_id
=
raw_change
.
blob_id
@blob_size
=
raw_change
.
size
@old_path
=
raw_change
.
old_path
.
presence
@new_path
=
raw_change
.
new_path
.
presence
@operation
=
raw_change
.
operation
&
.
downcase
||
:unknown
else
parse
(
raw_change
)
end
end
private
...
...
lib/gitlab/git/repository.rb
View file @
713c7fa9
...
...
@@ -581,6 +581,13 @@ module Gitlab
# old_rev and new_rev are commit ID's
# the result of this method is an array of Gitlab::Git::RawDiffChange
def
raw_changes_between
(
old_rev
,
new_rev
)
gitaly_migrate
(
:raw_changes_between
)
do
|
is_enabled
|
if
is_enabled
gitaly_repository_client
.
raw_changes_between
(
old_rev
,
new_rev
)
.
each_with_object
([])
do
|
msg
,
arr
|
msg
.
raw_changes
.
each
{
|
change
|
arr
<<
::
Gitlab
::
Git
::
RawDiffChange
.
new
(
change
)
}
end
else
result
=
[]
circuit_breaker
.
perform
do
...
...
@@ -595,6 +602,10 @@ module Gitlab
result
end
end
rescue
ArgumentError
=>
e
raise
Gitlab
::
Git
::
Repository
::
GitError
.
new
(
e
)
end
# Returns the SHA of the most recent common ancestor of +from+ and +to+
def
merge_base
(
from
,
to
)
...
...
lib/gitlab/gitaly_client/repository_service.rb
View file @
713c7fa9
...
...
@@ -293,6 +293,12 @@ module Gitlab
response
=
GitalyClient
.
call
(
@storage
,
:repository_service
,
:calculate_checksum
,
request
)
response
.
checksum
.
presence
end
def
raw_changes_between
(
from
,
to
)
request
=
Gitaly
::
GetRawChangesRequest
.
new
(
repository:
@gitaly_repo
,
from_revision:
from
,
to_revision:
to
)
GitalyClient
.
call
(
@storage
,
:repository_service
,
:get_raw_changes
,
request
)
end
end
end
end
spec/lib/gitlab/git/repository_spec.rb
View file @
713c7fa9
...
...
@@ -1068,6 +1068,7 @@ describe Gitlab::Git::Repository, seed_helper: true do
end
describe
'#raw_changes_between'
do
shared_examples
'raw changes'
do
let
(
:old_rev
)
{
}
let
(
:new_rev
)
{
}
let
(
:changes
)
{
repository
.
raw_changes_between
(
old_rev
,
new_rev
)
}
...
...
@@ -1105,6 +1106,15 @@ describe Gitlab::Git::Repository, seed_helper: true do
end
end
context
'when gitaly is enabled'
do
it_behaves_like
'raw changes'
end
context
'when gitaly is disabled'
,
:disable_gitaly
do
it_behaves_like
'raw changes'
end
end
describe
'#merge_base'
do
shared_examples
'#merge_base'
do
where
(
:from
,
:to
,
:result
)
do
...
...
spec/lib/gitlab/gitaly_client/repository_service_spec.rb
View file @
713c7fa9
...
...
@@ -167,4 +167,15 @@ describe Gitlab::GitalyClient::RepositoryService do
client
.
create_from_snapshot
(
'http://example.com?wiki=1'
,
'Custom xyz'
)
end
end
describe
'#raw_changes_between'
do
it
'sends a create_repository_from_snapshot message'
do
expect_any_instance_of
(
Gitaly
::
RepositoryService
::
Stub
)
.
to
receive
(
:get_raw_changes
)
.
with
(
gitaly_request_with_path
(
storage_name
,
relative_path
),
kind_of
(
Hash
))
.
and_return
(
double
)
client
.
raw_changes_between
(
'deadbeef'
,
'deadpork'
)
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