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
0
Merge Requests
0
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
Boxiang Sun
gitlab-ce
Commits
ccc73c45
Commit
ccc73c45
authored
Jan 06, 2017
by
Lin Jen-Shin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Rename from base to start because base could mean merge base
parent
e3c36850
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
91 additions
and
91 deletions
+91
-91
app/controllers/concerns/creates_commit.rb
app/controllers/concerns/creates_commit.rb
+3
-3
app/models/repository.rb
app/models/repository.rb
+39
-39
app/services/commits/change_service.rb
app/services/commits/change_service.rb
+5
-5
app/services/compare_service.rb
app/services/compare_service.rb
+6
-6
app/services/files/base_service.rb
app/services/files/base_service.rb
+5
-5
app/services/files/create_dir_service.rb
app/services/files/create_dir_service.rb
+2
-2
app/services/files/create_service.rb
app/services/files/create_service.rb
+3
-3
app/services/files/delete_service.rb
app/services/files/delete_service.rb
+2
-2
app/services/files/multi_service.rb
app/services/files/multi_service.rb
+3
-3
app/services/files/update_service.rb
app/services/files/update_service.rb
+3
-3
app/services/git_operation_service.rb
app/services/git_operation_service.rb
+20
-20
No files found.
app/controllers/concerns/creates_commit.rb
View file @
ccc73c45
...
@@ -4,10 +4,10 @@ module CreatesCommit
...
@@ -4,10 +4,10 @@ module CreatesCommit
def
create_commit
(
service
,
success_path
:,
failure_path
:,
failure_view:
nil
,
success_notice:
nil
)
def
create_commit
(
service
,
success_path
:,
failure_path
:,
failure_view:
nil
,
success_notice:
nil
)
set_commit_variables
set_commit_variables
base
_branch
=
@mr_target_branch
unless
initial_commit?
start
_branch
=
@mr_target_branch
unless
initial_commit?
commit_params
=
@commit_params
.
merge
(
commit_params
=
@commit_params
.
merge
(
base
_project:
@mr_target_project
,
start
_project:
@mr_target_project
,
base_branch:
base
_branch
,
start_branch:
start
_branch
,
target_branch:
@mr_source_branch
target_branch:
@mr_source_branch
)
)
...
...
app/models/repository.rb
View file @
ccc73c45
...
@@ -748,12 +748,12 @@ class Repository
...
@@ -748,12 +748,12 @@ class Repository
user
,
path
,
user
,
path
,
message
:,
branch_name
:,
message
:,
branch_name
:,
author_email:
nil
,
author_name:
nil
,
author_email:
nil
,
author_name:
nil
,
base_branch_name:
nil
,
base
_project:
project
)
start_branch_name:
nil
,
start
_project:
project
)
check_tree_entry_for_dir
(
branch_name
,
path
)
check_tree_entry_for_dir
(
branch_name
,
path
)
if
base
_branch_name
if
start
_branch_name
base
_project
.
repository
.
start
_project
.
repository
.
check_tree_entry_for_dir
(
base
_branch_name
,
path
)
check_tree_entry_for_dir
(
start
_branch_name
,
path
)
end
end
commit_file
(
commit_file
(
...
@@ -765,8 +765,8 @@ class Repository
...
@@ -765,8 +765,8 @@ class Repository
update:
false
,
update:
false
,
author_email:
author_email
,
author_email:
author_email
,
author_name:
author_name
,
author_name:
author_name
,
base_branch_name:
base
_branch_name
,
start_branch_name:
start
_branch_name
,
base_project:
base
_project
)
start_project:
start
_project
)
end
end
# rubocop:enable Metrics/ParameterLists
# rubocop:enable Metrics/ParameterLists
...
@@ -775,7 +775,7 @@ class Repository
...
@@ -775,7 +775,7 @@ class Repository
user
,
path
,
content
,
user
,
path
,
content
,
message
:,
branch_name
:,
update:
true
,
message
:,
branch_name
:,
update:
true
,
author_email:
nil
,
author_name:
nil
,
author_email:
nil
,
author_name:
nil
,
base_branch_name:
nil
,
base
_project:
project
)
start_branch_name:
nil
,
start
_project:
project
)
unless
update
unless
update
error_message
=
"Filename already exists; update not allowed"
error_message
=
"Filename already exists; update not allowed"
...
@@ -783,8 +783,8 @@ class Repository
...
@@ -783,8 +783,8 @@ class Repository
raise
Gitlab
::
Git
::
Repository
::
InvalidBlobName
.
new
(
error_message
)
raise
Gitlab
::
Git
::
Repository
::
InvalidBlobName
.
new
(
error_message
)
end
end
if
base
_branch_name
&&
if
start
_branch_name
&&
base_project
.
repository
.
tree_entry_at
(
base
_branch_name
,
path
)
start_project
.
repository
.
tree_entry_at
(
start
_branch_name
,
path
)
raise
Gitlab
::
Git
::
Repository
::
InvalidBlobName
.
new
(
error_message
)
raise
Gitlab
::
Git
::
Repository
::
InvalidBlobName
.
new
(
error_message
)
end
end
end
end
...
@@ -795,8 +795,8 @@ class Repository
...
@@ -795,8 +795,8 @@ class Repository
branch_name:
branch_name
,
branch_name:
branch_name
,
author_email:
author_email
,
author_email:
author_email
,
author_name:
author_name
,
author_name:
author_name
,
base_branch_name:
base
_branch_name
,
start_branch_name:
start
_branch_name
,
base_project:
base
_project
,
start_project:
start
_project
,
actions:
[{
action: :create
,
actions:
[{
action: :create
,
file_path:
path
,
file_path:
path
,
content:
content
}])
content:
content
}])
...
@@ -808,7 +808,7 @@ class Repository
...
@@ -808,7 +808,7 @@ class Repository
user
,
path
,
content
,
user
,
path
,
content
,
message
:,
branch_name
:,
previous_path
:,
message
:,
branch_name
:,
previous_path
:,
author_email:
nil
,
author_name:
nil
,
author_email:
nil
,
author_name:
nil
,
base_branch_name:
nil
,
base
_project:
project
)
start_branch_name:
nil
,
start
_project:
project
)
action
=
if
previous_path
&&
previous_path
!=
path
action
=
if
previous_path
&&
previous_path
!=
path
:move
:move
else
else
...
@@ -821,8 +821,8 @@ class Repository
...
@@ -821,8 +821,8 @@ class Repository
branch_name:
branch_name
,
branch_name:
branch_name
,
author_email:
author_email
,
author_email:
author_email
,
author_name:
author_name
,
author_name:
author_name
,
base_branch_name:
base
_branch_name
,
start_branch_name:
start
_branch_name
,
base_project:
base
_project
,
start_project:
start
_project
,
actions:
[{
action:
action
,
actions:
[{
action:
action
,
file_path:
path
,
file_path:
path
,
content:
content
,
content:
content
,
...
@@ -835,15 +835,15 @@ class Repository
...
@@ -835,15 +835,15 @@ class Repository
user
,
path
,
user
,
path
,
message
:,
branch_name
:,
message
:,
branch_name
:,
author_email:
nil
,
author_name:
nil
,
author_email:
nil
,
author_name:
nil
,
base_branch_name:
nil
,
base
_project:
project
)
start_branch_name:
nil
,
start
_project:
project
)
multi_action
(
multi_action
(
user:
user
,
user:
user
,
message:
message
,
message:
message
,
branch_name:
branch_name
,
branch_name:
branch_name
,
author_email:
author_email
,
author_email:
author_email
,
author_name:
author_name
,
author_name:
author_name
,
base_branch_name:
base
_branch_name
,
start_branch_name:
start
_branch_name
,
base_project:
base
_project
,
start_project:
start
_project
,
actions:
[{
action: :delete
,
actions:
[{
action: :delete
,
file_path:
path
}])
file_path:
path
}])
end
end
...
@@ -853,16 +853,16 @@ class Repository
...
@@ -853,16 +853,16 @@ class Repository
def
multi_action
(
def
multi_action
(
user
:,
branch_name
:,
message
:,
actions
:,
user
:,
branch_name
:,
message
:,
actions
:,
author_email:
nil
,
author_name:
nil
,
author_email:
nil
,
author_name:
nil
,
base_branch_name:
nil
,
base
_project:
project
)
start_branch_name:
nil
,
start
_project:
project
)
GitOperationService
.
new
(
user
,
self
).
with_branch
(
GitOperationService
.
new
(
user
,
self
).
with_branch
(
branch_name
,
branch_name
,
base_branch_name:
base
_branch_name
,
start_branch_name:
start
_branch_name
,
base_project:
base_project
)
do
|
base
_commit
|
start_project:
start_project
)
do
|
start
_commit
|
index
=
rugged
.
index
index
=
rugged
.
index
parents
=
if
base
_commit
parents
=
if
start
_commit
index
.
read_tree
(
base
_commit
.
raw_commit
.
tree
)
index
.
read_tree
(
start
_commit
.
raw_commit
.
tree
)
[
base
_commit
.
sha
]
[
start
_commit
.
sha
]
else
else
[]
[]
end
end
...
@@ -910,8 +910,8 @@ class Repository
...
@@ -910,8 +910,8 @@ class Repository
def
merge
(
user
,
merge_request
,
options
=
{})
def
merge
(
user
,
merge_request
,
options
=
{})
GitOperationService
.
new
(
user
,
self
).
with_branch
(
GitOperationService
.
new
(
user
,
self
).
with_branch
(
merge_request
.
target_branch
)
do
|
base
_commit
|
merge_request
.
target_branch
)
do
|
start
_commit
|
our_commit
=
base
_commit
.
sha
our_commit
=
start
_commit
.
sha
their_commit
=
merge_request
.
diff_head_sha
their_commit
=
merge_request
.
diff_head_sha
raise
'Invalid merge target'
unless
our_commit
raise
'Invalid merge target'
unless
our_commit
...
@@ -935,15 +935,15 @@ class Repository
...
@@ -935,15 +935,15 @@ class Repository
def
revert
(
def
revert
(
user
,
commit
,
branch_name
,
revert_tree_id
=
nil
,
user
,
commit
,
branch_name
,
revert_tree_id
=
nil
,
base_branch_name:
nil
,
base
_project:
project
)
start_branch_name:
nil
,
start
_project:
project
)
revert_tree_id
||=
check_revert_content
(
commit
,
branch_name
)
revert_tree_id
||=
check_revert_content
(
commit
,
branch_name
)
return
false
unless
revert_tree_id
return
false
unless
revert_tree_id
GitOperationService
.
new
(
user
,
self
).
with_branch
(
GitOperationService
.
new
(
user
,
self
).
with_branch
(
branch_name
,
branch_name
,
base_branch_name:
base
_branch_name
,
start_branch_name:
start
_branch_name
,
base_project:
base_project
)
do
|
base
_commit
|
start_project:
start_project
)
do
|
start
_commit
|
committer
=
user_to_committer
(
user
)
committer
=
user_to_committer
(
user
)
...
@@ -952,21 +952,21 @@ class Repository
...
@@ -952,21 +952,21 @@ class Repository
author:
committer
,
author:
committer
,
committer:
committer
,
committer:
committer
,
tree:
revert_tree_id
,
tree:
revert_tree_id
,
parents:
[
base
_commit
.
sha
])
parents:
[
start
_commit
.
sha
])
end
end
end
end
def
cherry_pick
(
def
cherry_pick
(
user
,
commit
,
branch_name
,
cherry_pick_tree_id
=
nil
,
user
,
commit
,
branch_name
,
cherry_pick_tree_id
=
nil
,
base_branch_name:
nil
,
base
_project:
project
)
start_branch_name:
nil
,
start
_project:
project
)
cherry_pick_tree_id
||=
check_cherry_pick_content
(
commit
,
branch_name
)
cherry_pick_tree_id
||=
check_cherry_pick_content
(
commit
,
branch_name
)
return
false
unless
cherry_pick_tree_id
return
false
unless
cherry_pick_tree_id
GitOperationService
.
new
(
user
,
self
).
with_branch
(
GitOperationService
.
new
(
user
,
self
).
with_branch
(
branch_name
,
branch_name
,
base_branch_name:
base
_branch_name
,
start_branch_name:
start
_branch_name
,
base_project:
base_project
)
do
|
base
_commit
|
start_project:
start_project
)
do
|
start
_commit
|
committer
=
user_to_committer
(
user
)
committer
=
user_to_committer
(
user
)
...
@@ -979,7 +979,7 @@ class Repository
...
@@ -979,7 +979,7 @@ class Repository
},
},
committer:
committer
,
committer:
committer
,
tree:
cherry_pick_tree_id
,
tree:
cherry_pick_tree_id
,
parents:
[
base
_commit
.
sha
])
parents:
[
start
_commit
.
sha
])
end
end
end
end
...
@@ -1066,20 +1066,20 @@ class Repository
...
@@ -1066,20 +1066,20 @@ class Repository
Gitlab
::
Popen
.
popen
(
args
,
path_to_repo
).
first
.
lines
.
map
(
&
:strip
)
Gitlab
::
Popen
.
popen
(
args
,
path_to_repo
).
first
.
lines
.
map
(
&
:strip
)
end
end
def
with_repo_branch_commit
(
base_repository
,
base
_branch_name
)
def
with_repo_branch_commit
(
start_repository
,
start
_branch_name
)
branch_name_or_sha
=
branch_name_or_sha
=
if
base
_repository
==
self
if
start
_repository
==
self
base
_branch_name
start
_branch_name
else
else
tmp_ref
=
"refs/tmp/
#{
SecureRandom
.
hex
}
/head"
tmp_ref
=
"refs/tmp/
#{
SecureRandom
.
hex
}
/head"
fetch_ref
(
fetch_ref
(
base
_repository
.
path_to_repo
,
start
_repository
.
path_to_repo
,
"
#{
Gitlab
::
Git
::
BRANCH_REF_PREFIX
}#{
base
_branch_name
}
"
,
"
#{
Gitlab
::
Git
::
BRANCH_REF_PREFIX
}#{
start
_branch_name
}
"
,
tmp_ref
tmp_ref
)
)
base_repository
.
commit
(
base
_branch_name
).
sha
start_repository
.
commit
(
start
_branch_name
).
sha
end
end
yield
(
commit
(
branch_name_or_sha
))
yield
(
commit
(
branch_name_or_sha
))
...
...
app/services/commits/change_service.rb
View file @
ccc73c45
...
@@ -4,8 +4,8 @@ module Commits
...
@@ -4,8 +4,8 @@ module Commits
class
ChangeError
<
StandardError
;
end
class
ChangeError
<
StandardError
;
end
def
execute
def
execute
@
base_project
=
params
[
:base
_project
]
||
@project
@
start_project
=
params
[
:start
_project
]
||
@project
@
base_branch
=
params
[
:base
_branch
]
@
start_branch
=
params
[
:start
_branch
]
@target_branch
=
params
[
:target_branch
]
@target_branch
=
params
[
:target_branch
]
@commit
=
params
[
:commit
]
@commit
=
params
[
:commit
]
@create_merge_request
=
params
[
:create_merge_request
].
present?
@create_merge_request
=
params
[
:create_merge_request
].
present?
...
@@ -28,7 +28,7 @@ module Commits
...
@@ -28,7 +28,7 @@ module Commits
if
@create_merge_request
if
@create_merge_request
into
=
@commit
.
public_send
(
"
#{
action
}
_branch_name"
)
into
=
@commit
.
public_send
(
"
#{
action
}
_branch_name"
)
tree_branch
=
@
base
_branch
tree_branch
=
@
start
_branch
else
else
into
=
tree_branch
=
@target_branch
into
=
tree_branch
=
@target_branch
end
end
...
@@ -45,8 +45,8 @@ module Commits
...
@@ -45,8 +45,8 @@ module Commits
@commit
,
@commit
,
into
,
into
,
tree_id
,
tree_id
,
base_project:
@base
_project
,
start_project:
@start
_project
,
base_branch_name:
@base
_branch
)
start_branch_name:
@start
_branch
)
success
success
else
else
...
...
app/services/compare_service.rb
View file @
ccc73c45
...
@@ -3,18 +3,18 @@ require 'securerandom'
...
@@ -3,18 +3,18 @@ require 'securerandom'
# Compare 2 branches for one repo or between repositories
# Compare 2 branches for one repo or between repositories
# and return Gitlab::Git::Compare object that responds to commits and diffs
# and return Gitlab::Git::Compare object that responds to commits and diffs
class
CompareService
class
CompareService
attr_reader
:
base_project
,
:base
_branch_name
attr_reader
:
start_project
,
:start
_branch_name
def
initialize
(
new_
base_project
,
new_base
_branch_name
)
def
initialize
(
new_
start_project
,
new_start
_branch_name
)
@
base_project
=
new_base
_project
@
start_project
=
new_start
_project
@
base_branch_name
=
new_base
_branch_name
@
start_branch_name
=
new_start
_branch_name
end
end
def
execute
(
target_project
,
target_branch
,
straight:
false
)
def
execute
(
target_project
,
target_branch
,
straight:
false
)
# If compare with other project we need to fetch ref first
# If compare with other project we need to fetch ref first
target_project
.
repository
.
with_repo_branch_commit
(
target_project
.
repository
.
with_repo_branch_commit
(
base
_project
.
repository
,
start
_project
.
repository
,
base
_branch_name
)
do
|
commit
|
start
_branch_name
)
do
|
commit
|
break
unless
commit
break
unless
commit
compare
(
commit
.
sha
,
target_project
,
target_branch
,
straight
)
compare
(
commit
.
sha
,
target_project
,
target_branch
,
straight
)
...
...
app/services/files/base_service.rb
View file @
ccc73c45
...
@@ -3,8 +3,8 @@ module Files
...
@@ -3,8 +3,8 @@ module Files
class
ValidationError
<
StandardError
;
end
class
ValidationError
<
StandardError
;
end
def
execute
def
execute
@
base_project
=
params
[
:base
_project
]
||
@project
@
start_project
=
params
[
:start
_project
]
||
@project
@
base_branch
=
params
[
:base
_branch
]
@
start_branch
=
params
[
:start
_branch
]
@target_branch
=
params
[
:target_branch
]
@target_branch
=
params
[
:target_branch
]
@commit_message
=
params
[
:commit_message
]
@commit_message
=
params
[
:commit_message
]
...
@@ -22,7 +22,7 @@ module Files
...
@@ -22,7 +22,7 @@ module Files
# Validate parameters
# Validate parameters
validate
validate
# Create new branch if it different from
base
_branch
# Create new branch if it different from
start
_branch
validate_target_branch
if
different_branch?
validate_target_branch
if
different_branch?
result
=
commit
result
=
commit
...
@@ -38,7 +38,7 @@ module Files
...
@@ -38,7 +38,7 @@ module Files
private
private
def
different_branch?
def
different_branch?
@
base_branch
!=
@target_branch
||
@base
_project
!=
@project
@
start_branch
!=
@target_branch
||
@start
_project
!=
@project
end
end
def
file_has_changed?
def
file_has_changed?
...
@@ -59,7 +59,7 @@ module Files
...
@@ -59,7 +59,7 @@ module Files
end
end
unless
project
.
empty_repo?
unless
project
.
empty_repo?
unless
@
base_project
.
repository
.
branch_exists?
(
@base
_branch
)
unless
@
start_project
.
repository
.
branch_exists?
(
@start
_branch
)
raise_error
(
'You can only create or edit files when you are on a branch'
)
raise_error
(
'You can only create or edit files when you are on a branch'
)
end
end
...
...
app/services/files/create_dir_service.rb
View file @
ccc73c45
...
@@ -8,8 +8,8 @@ module Files
...
@@ -8,8 +8,8 @@ module Files
branch_name:
@target_branch
,
branch_name:
@target_branch
,
author_email:
@author_email
,
author_email:
@author_email
,
author_name:
@author_name
,
author_name:
@author_name
,
base_project:
@base
_project
,
start_project:
@start
_project
,
base_branch_name:
@base
_branch
)
start_branch_name:
@start
_branch
)
end
end
def
validate
def
validate
...
...
app/services/files/create_service.rb
View file @
ccc73c45
...
@@ -10,8 +10,8 @@ module Files
...
@@ -10,8 +10,8 @@ module Files
update:
false
,
update:
false
,
author_email:
@author_email
,
author_email:
@author_email
,
author_name:
@author_name
,
author_name:
@author_name
,
base_project:
@base
_project
,
start_project:
@start
_project
,
base_branch_name:
@base
_branch
)
start_branch_name:
@start
_branch
)
end
end
def
validate
def
validate
...
@@ -34,7 +34,7 @@ module Files
...
@@ -34,7 +34,7 @@ module Files
unless
project
.
empty_repo?
unless
project
.
empty_repo?
@file_path
.
slice!
(
0
)
if
@file_path
.
start_with?
(
'/'
)
@file_path
.
slice!
(
0
)
if
@file_path
.
start_with?
(
'/'
)
blob
=
repository
.
blob_at_branch
(
@
base
_branch
,
@file_path
)
blob
=
repository
.
blob_at_branch
(
@
start
_branch
,
@file_path
)
if
blob
if
blob
raise_error
(
'Your changes could not be committed because a file with the same name already exists'
)
raise_error
(
'Your changes could not be committed because a file with the same name already exists'
)
...
...
app/services/files/delete_service.rb
View file @
ccc73c45
...
@@ -8,8 +8,8 @@ module Files
...
@@ -8,8 +8,8 @@ module Files
branch_name:
@target_branch
,
branch_name:
@target_branch
,
author_email:
@author_email
,
author_email:
@author_email
,
author_name:
@author_name
,
author_name:
@author_name
,
base_project:
@base
_project
,
start_project:
@start
_project
,
base_branch_name:
@base
_branch
)
start_branch_name:
@start
_branch
)
end
end
end
end
end
end
app/services/files/multi_service.rb
View file @
ccc73c45
...
@@ -10,8 +10,8 @@ module Files
...
@@ -10,8 +10,8 @@ module Files
actions:
params
[
:actions
],
actions:
params
[
:actions
],
author_email:
@author_email
,
author_email:
@author_email
,
author_name:
@author_name
,
author_name:
@author_name
,
base_project:
@base
_project
,
start_project:
@start
_project
,
base_branch_name:
@base
_branch
start_branch_name:
@start
_branch
)
)
end
end
...
@@ -63,7 +63,7 @@ module Files
...
@@ -63,7 +63,7 @@ module Files
end
end
def
last_commit
def
last_commit
Gitlab
::
Git
::
Commit
.
last_for_path
(
repository
,
@
base
_branch
,
@file_path
)
Gitlab
::
Git
::
Commit
.
last_for_path
(
repository
,
@
start
_branch
,
@file_path
)
end
end
def
regex_check
(
file
)
def
regex_check
(
file
)
...
...
app/services/files/update_service.rb
View file @
ccc73c45
...
@@ -9,8 +9,8 @@ module Files
...
@@ -9,8 +9,8 @@ module Files
previous_path:
@previous_path
,
previous_path:
@previous_path
,
author_email:
@author_email
,
author_email:
@author_email
,
author_name:
@author_name
,
author_name:
@author_name
,
base_project:
@base
_project
,
start_project:
@start
_project
,
base_branch_name:
@base
_branch
)
start_branch_name:
@start
_branch
)
end
end
private
private
...
@@ -25,7 +25,7 @@ module Files
...
@@ -25,7 +25,7 @@ module Files
def
last_commit
def
last_commit
@last_commit
||=
Gitlab
::
Git
::
Commit
.
@last_commit
||=
Gitlab
::
Git
::
Commit
.
last_for_path
(
@
base_project
.
repository
,
@base
_branch
,
@file_path
)
last_for_path
(
@
start_project
.
repository
,
@start
_branch
,
@file_path
)
end
end
end
end
end
end
app/services/git_operation_service.rb
View file @
ccc73c45
...
@@ -46,23 +46,23 @@ class GitOperationService
...
@@ -46,23 +46,23 @@ class GitOperationService
end
end
end
end
# Whenever `
base
_branch_name` is passed, if `branch_name` doesn't exist,
# Whenever `
start
_branch_name` is passed, if `branch_name` doesn't exist,
# it would be created from `
base
_branch_name`.
# it would be created from `
start
_branch_name`.
# If `
base
_project` is passed, and the branch doesn't exist,
# If `
start
_project` is passed, and the branch doesn't exist,
# it would try to find the
base
from it instead of current repository.
# it would try to find the
commits
from it instead of current repository.
def
with_branch
(
def
with_branch
(
branch_name
,
branch_name
,
base
_branch_name:
nil
,
start
_branch_name:
nil
,
base
_project:
repository
.
project
,
start
_project:
repository
.
project
,
&
block
)
&
block
)
check_with_branch_arguments!
(
check_with_branch_arguments!
(
branch_name
,
base_branch_name
,
base
_project
)
branch_name
,
start_branch_name
,
start
_project
)
update_branch_with_hooks
(
branch_name
)
do
update_branch_with_hooks
(
branch_name
)
do
repository
.
with_repo_branch_commit
(
repository
.
with_repo_branch_commit
(
base
_project
.
repository
,
start
_project
.
repository
,
base
_branch_name
||
branch_name
,
start
_branch_name
||
branch_name
,
&
block
)
&
block
)
end
end
end
end
...
@@ -148,27 +148,27 @@ class GitOperationService
...
@@ -148,27 +148,27 @@ class GitOperationService
end
end
def
check_with_branch_arguments!
(
def
check_with_branch_arguments!
(
branch_name
,
base_branch_name
,
base
_project
)
branch_name
,
start_branch_name
,
start
_project
)
return
if
repository
.
branch_exists?
(
branch_name
)
return
if
repository
.
branch_exists?
(
branch_name
)
if
repository
.
project
!=
base
_project
if
repository
.
project
!=
start
_project
unless
base
_branch_name
unless
start
_branch_name
raise
ArgumentError
,
raise
ArgumentError
,
'Should also pass :
base
_branch_name if'
+
'Should also pass :
start
_branch_name if'
+
' :
base
_project is different from current project'
' :
start
_project is different from current project'
end
end
unless
base_project
.
repository
.
branch_exists?
(
base
_branch_name
)
unless
start_project
.
repository
.
branch_exists?
(
start
_branch_name
)
raise
ArgumentError
,
raise
ArgumentError
,
"Cannot find branch
#{
branch_name
}
nor"
\
"Cannot find branch
#{
branch_name
}
nor"
\
"
#{
base
_branch_name
}
from"
\
"
#{
start
_branch_name
}
from"
\
"
#{
base
_project
.
path_with_namespace
}
"
"
#{
start
_project
.
path_with_namespace
}
"
end
end
elsif
base
_branch_name
elsif
start
_branch_name
unless
repository
.
branch_exists?
(
base
_branch_name
)
unless
repository
.
branch_exists?
(
start
_branch_name
)
raise
ArgumentError
,
raise
ArgumentError
,
"Cannot find branch
#{
branch_name
}
nor"
\
"Cannot find branch
#{
branch_name
}
nor"
\
"
#{
base
_branch_name
}
from"
\
"
#{
start
_branch_name
}
from"
\
"
#{
repository
.
project
.
path_with_namespace
}
"
"
#{
repository
.
project
.
path_with_namespace
}
"
end
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