Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
a4b97b2c
G
gitlab-foss
项目概览
李少辉-开发者
/
gitlab-foss
通知
15
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
gitlab-foss
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a4b97b2c
编写于
1月 06, 2017
作者:
L
Lin Jen-Shin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Rename source to base to avoid confusion from MR
上级
593228ff
变更
11
隐藏空白更改
内联
并排
Showing
11 changed file
with
91 addition
and
91 deletion
+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
未找到文件。
app/controllers/concerns/creates_commit.rb
浏览文件 @
a4b97b2c
...
...
@@ -4,10 +4,10 @@ module CreatesCommit
def
create_commit
(
service
,
success_path
:,
failure_path
:,
failure_view:
nil
,
success_notice:
nil
)
set_commit_variables
sourc
e_branch
=
@mr_target_branch
unless
initial_commit?
bas
e_branch
=
@mr_target_branch
unless
initial_commit?
commit_params
=
@commit_params
.
merge
(
sourc
e_project:
@mr_target_project
,
source_branch:
sourc
e_branch
,
bas
e_project:
@mr_target_project
,
base_branch:
bas
e_branch
,
target_branch:
@mr_source_branch
)
...
...
app/models/repository.rb
浏览文件 @
a4b97b2c
...
...
@@ -748,12 +748,12 @@ class Repository
user
,
path
,
message
:,
branch_name
:,
author_email:
nil
,
author_name:
nil
,
source_branch_name:
nil
,
sourc
e_project:
project
)
base_branch_name:
nil
,
bas
e_project:
project
)
check_tree_entry_for_dir
(
branch_name
,
path
)
if
sourc
e_branch_name
sourc
e_project
.
repository
.
check_tree_entry_for_dir
(
sourc
e_branch_name
,
path
)
if
bas
e_branch_name
bas
e_project
.
repository
.
check_tree_entry_for_dir
(
bas
e_branch_name
,
path
)
end
commit_file
(
...
...
@@ -765,8 +765,8 @@ class Repository
update:
false
,
author_email:
author_email
,
author_name:
author_name
,
source_branch_name:
sourc
e_branch_name
,
source_project:
sourc
e_project
)
base_branch_name:
bas
e_branch_name
,
base_project:
bas
e_project
)
end
# rubocop:enable Metrics/ParameterLists
...
...
@@ -775,7 +775,7 @@ class Repository
user
,
path
,
content
,
message
:,
branch_name
:,
update:
true
,
author_email:
nil
,
author_name:
nil
,
source_branch_name:
nil
,
sourc
e_project:
project
)
base_branch_name:
nil
,
bas
e_project:
project
)
unless
update
error_message
=
"Filename already exists; update not allowed"
...
...
@@ -783,8 +783,8 @@ class Repository
raise
Gitlab
::
Git
::
Repository
::
InvalidBlobName
.
new
(
error_message
)
end
if
sourc
e_branch_name
&&
source_project
.
repository
.
tree_entry_at
(
sourc
e_branch_name
,
path
)
if
bas
e_branch_name
&&
base_project
.
repository
.
tree_entry_at
(
bas
e_branch_name
,
path
)
raise
Gitlab
::
Git
::
Repository
::
InvalidBlobName
.
new
(
error_message
)
end
end
...
...
@@ -795,8 +795,8 @@ class Repository
branch_name:
branch_name
,
author_email:
author_email
,
author_name:
author_name
,
source_branch_name:
sourc
e_branch_name
,
source_project:
sourc
e_project
,
base_branch_name:
bas
e_branch_name
,
base_project:
bas
e_project
,
actions:
[{
action: :create
,
file_path:
path
,
content:
content
}])
...
...
@@ -808,7 +808,7 @@ class Repository
user
,
path
,
content
,
message
:,
branch_name
:,
previous_path
:,
author_email:
nil
,
author_name:
nil
,
source_branch_name:
nil
,
sourc
e_project:
project
)
base_branch_name:
nil
,
bas
e_project:
project
)
action
=
if
previous_path
&&
previous_path
!=
path
:move
else
...
...
@@ -821,8 +821,8 @@ class Repository
branch_name:
branch_name
,
author_email:
author_email
,
author_name:
author_name
,
source_branch_name:
sourc
e_branch_name
,
source_project:
sourc
e_project
,
base_branch_name:
bas
e_branch_name
,
base_project:
bas
e_project
,
actions:
[{
action:
action
,
file_path:
path
,
content:
content
,
...
...
@@ -835,15 +835,15 @@ class Repository
user
,
path
,
message
:,
branch_name
:,
author_email:
nil
,
author_name:
nil
,
source_branch_name:
nil
,
sourc
e_project:
project
)
base_branch_name:
nil
,
bas
e_project:
project
)
multi_action
(
user:
user
,
message:
message
,
branch_name:
branch_name
,
author_email:
author_email
,
author_name:
author_name
,
source_branch_name:
sourc
e_branch_name
,
source_project:
sourc
e_project
,
base_branch_name:
bas
e_branch_name
,
base_project:
bas
e_project
,
actions:
[{
action: :delete
,
file_path:
path
}])
end
...
...
@@ -853,16 +853,16 @@ class Repository
def
multi_action
(
user
:,
branch_name
:,
message
:,
actions
:,
author_email:
nil
,
author_name:
nil
,
source_branch_name:
nil
,
sourc
e_project:
project
)
base_branch_name:
nil
,
bas
e_project:
project
)
GitOperationService
.
new
(
user
,
self
).
with_branch
(
branch_name
,
source_branch_name:
sourc
e_branch_name
,
source_project:
source_project
)
do
|
sourc
e_commit
|
base_branch_name:
bas
e_branch_name
,
base_project:
base_project
)
do
|
bas
e_commit
|
index
=
rugged
.
index
parents
=
if
sourc
e_commit
index
.
read_tree
(
sourc
e_commit
.
raw_commit
.
tree
)
[
sourc
e_commit
.
sha
]
parents
=
if
bas
e_commit
index
.
read_tree
(
bas
e_commit
.
raw_commit
.
tree
)
[
bas
e_commit
.
sha
]
else
[]
end
...
...
@@ -910,8 +910,8 @@ class Repository
def
merge
(
user
,
merge_request
,
options
=
{})
GitOperationService
.
new
(
user
,
self
).
with_branch
(
merge_request
.
target_branch
)
do
|
sourc
e_commit
|
our_commit
=
sourc
e_commit
.
sha
merge_request
.
target_branch
)
do
|
bas
e_commit
|
our_commit
=
bas
e_commit
.
sha
their_commit
=
merge_request
.
diff_head_sha
raise
'Invalid merge target'
unless
our_commit
...
...
@@ -935,15 +935,15 @@ class Repository
def
revert
(
user
,
commit
,
branch_name
,
revert_tree_id
=
nil
,
source_branch_name:
nil
,
sourc
e_project:
project
)
base_branch_name:
nil
,
bas
e_project:
project
)
revert_tree_id
||=
check_revert_content
(
commit
,
branch_name
)
return
false
unless
revert_tree_id
GitOperationService
.
new
(
user
,
self
).
with_branch
(
branch_name
,
source_branch_name:
sourc
e_branch_name
,
source_project:
source_project
)
do
|
sourc
e_commit
|
base_branch_name:
bas
e_branch_name
,
base_project:
base_project
)
do
|
bas
e_commit
|
committer
=
user_to_committer
(
user
)
...
...
@@ -952,21 +952,21 @@ class Repository
author:
committer
,
committer:
committer
,
tree:
revert_tree_id
,
parents:
[
sourc
e_commit
.
sha
])
parents:
[
bas
e_commit
.
sha
])
end
end
def
cherry_pick
(
user
,
commit
,
branch_name
,
cherry_pick_tree_id
=
nil
,
source_branch_name:
nil
,
sourc
e_project:
project
)
base_branch_name:
nil
,
bas
e_project:
project
)
cherry_pick_tree_id
||=
check_cherry_pick_content
(
commit
,
branch_name
)
return
false
unless
cherry_pick_tree_id
GitOperationService
.
new
(
user
,
self
).
with_branch
(
branch_name
,
source_branch_name:
sourc
e_branch_name
,
source_project:
source_project
)
do
|
sourc
e_commit
|
base_branch_name:
bas
e_branch_name
,
base_project:
base_project
)
do
|
bas
e_commit
|
committer
=
user_to_committer
(
user
)
...
...
@@ -979,7 +979,7 @@ class Repository
},
committer:
committer
,
tree:
cherry_pick_tree_id
,
parents:
[
sourc
e_commit
.
sha
])
parents:
[
bas
e_commit
.
sha
])
end
end
...
...
@@ -1066,20 +1066,20 @@ class Repository
Gitlab
::
Popen
.
popen
(
args
,
path_to_repo
).
first
.
lines
.
map
(
&
:strip
)
end
def
with_repo_branch_commit
(
source_repository
,
sourc
e_branch_name
)
def
with_repo_branch_commit
(
base_repository
,
bas
e_branch_name
)
branch_name_or_sha
=
if
sourc
e_repository
==
self
sourc
e_branch_name
if
bas
e_repository
==
self
bas
e_branch_name
else
tmp_ref
=
"refs/tmp/
#{
SecureRandom
.
hex
}
/head"
fetch_ref
(
sourc
e_repository
.
path_to_repo
,
"
#{
Gitlab
::
Git
::
BRANCH_REF_PREFIX
}#{
sourc
e_branch_name
}
"
,
bas
e_repository
.
path_to_repo
,
"
#{
Gitlab
::
Git
::
BRANCH_REF_PREFIX
}#{
bas
e_branch_name
}
"
,
tmp_ref
)
source_repository
.
commit
(
sourc
e_branch_name
).
sha
base_repository
.
commit
(
bas
e_branch_name
).
sha
end
yield
(
commit
(
branch_name_or_sha
))
...
...
app/services/commits/change_service.rb
浏览文件 @
a4b97b2c
...
...
@@ -4,8 +4,8 @@ module Commits
class
ChangeError
<
StandardError
;
end
def
execute
@
source_project
=
params
[
:sourc
e_project
]
||
@project
@
source_branch
=
params
[
:sourc
e_branch
]
@
base_project
=
params
[
:bas
e_project
]
||
@project
@
base_branch
=
params
[
:bas
e_branch
]
@target_branch
=
params
[
:target_branch
]
@commit
=
params
[
:commit
]
@create_merge_request
=
params
[
:create_merge_request
].
present?
...
...
@@ -28,7 +28,7 @@ module Commits
if
@create_merge_request
into
=
@commit
.
public_send
(
"
#{
action
}
_branch_name"
)
tree_branch
=
@
sourc
e_branch
tree_branch
=
@
bas
e_branch
else
into
=
tree_branch
=
@target_branch
end
...
...
@@ -45,8 +45,8 @@ module Commits
@commit
,
into
,
tree_id
,
source_project:
@sourc
e_project
,
source_branch_name:
@sourc
e_branch
)
base_project:
@bas
e_project
,
base_branch_name:
@bas
e_branch
)
success
else
...
...
app/services/compare_service.rb
浏览文件 @
a4b97b2c
...
...
@@ -3,18 +3,18 @@ require 'securerandom'
# Compare 2 branches for one repo or between repositories
# and return Gitlab::Git::Compare object that responds to commits and diffs
class
CompareService
attr_reader
:
source_project
,
:sourc
e_branch_name
attr_reader
:
base_project
,
:bas
e_branch_name
def
initialize
(
new_
source_project
,
new_sourc
e_branch_name
)
@
source_project
=
new_sourc
e_project
@
source_branch_name
=
new_sourc
e_branch_name
def
initialize
(
new_
base_project
,
new_bas
e_branch_name
)
@
base_project
=
new_bas
e_project
@
base_branch_name
=
new_bas
e_branch_name
end
def
execute
(
target_project
,
target_branch
,
straight:
false
)
# If compare with other project we need to fetch ref first
target_project
.
repository
.
with_repo_branch_commit
(
sourc
e_project
.
repository
,
sourc
e_branch_name
)
do
|
commit
|
bas
e_project
.
repository
,
bas
e_branch_name
)
do
|
commit
|
break
unless
commit
compare
(
commit
.
sha
,
target_project
,
target_branch
,
straight
)
...
...
app/services/files/base_service.rb
浏览文件 @
a4b97b2c
...
...
@@ -3,8 +3,8 @@ module Files
class
ValidationError
<
StandardError
;
end
def
execute
@
source_project
=
params
[
:sourc
e_project
]
||
@project
@
source_branch
=
params
[
:sourc
e_branch
]
@
base_project
=
params
[
:bas
e_project
]
||
@project
@
base_branch
=
params
[
:bas
e_branch
]
@target_branch
=
params
[
:target_branch
]
@commit_message
=
params
[
:commit_message
]
...
...
@@ -22,7 +22,7 @@ module Files
# Validate parameters
validate
# Create new branch if it different from
sourc
e_branch
# Create new branch if it different from
bas
e_branch
validate_target_branch
if
different_branch?
result
=
commit
...
...
@@ -38,7 +38,7 @@ module Files
private
def
different_branch?
@
source_branch
!=
@target_branch
||
@sourc
e_project
!=
@project
@
base_branch
!=
@target_branch
||
@bas
e_project
!=
@project
end
def
file_has_changed?
...
...
@@ -59,7 +59,7 @@ module Files
end
unless
project
.
empty_repo?
unless
@
source_project
.
repository
.
branch_exists?
(
@sourc
e_branch
)
unless
@
base_project
.
repository
.
branch_exists?
(
@bas
e_branch
)
raise_error
(
'You can only create or edit files when you are on a branch'
)
end
...
...
app/services/files/create_dir_service.rb
浏览文件 @
a4b97b2c
...
...
@@ -8,8 +8,8 @@ module Files
branch_name:
@target_branch
,
author_email:
@author_email
,
author_name:
@author_name
,
source_project:
@sourc
e_project
,
source_branch_name:
@sourc
e_branch
)
base_project:
@bas
e_project
,
base_branch_name:
@bas
e_branch
)
end
def
validate
...
...
app/services/files/create_service.rb
浏览文件 @
a4b97b2c
...
...
@@ -10,8 +10,8 @@ module Files
update:
false
,
author_email:
@author_email
,
author_name:
@author_name
,
source_project:
@sourc
e_project
,
source_branch_name:
@sourc
e_branch
)
base_project:
@bas
e_project
,
base_branch_name:
@bas
e_branch
)
end
def
validate
...
...
@@ -34,7 +34,7 @@ module Files
unless
project
.
empty_repo?
@file_path
.
slice!
(
0
)
if
@file_path
.
start_with?
(
'/'
)
blob
=
repository
.
blob_at_branch
(
@
sourc
e_branch
,
@file_path
)
blob
=
repository
.
blob_at_branch
(
@
bas
e_branch
,
@file_path
)
if
blob
raise_error
(
'Your changes could not be committed because a file with the same name already exists'
)
...
...
app/services/files/delete_service.rb
浏览文件 @
a4b97b2c
...
...
@@ -8,8 +8,8 @@ module Files
branch_name:
@target_branch
,
author_email:
@author_email
,
author_name:
@author_name
,
source_project:
@sourc
e_project
,
source_branch_name:
@sourc
e_branch
)
base_project:
@bas
e_project
,
base_branch_name:
@bas
e_branch
)
end
end
end
app/services/files/multi_service.rb
浏览文件 @
a4b97b2c
...
...
@@ -10,8 +10,8 @@ module Files
actions:
params
[
:actions
],
author_email:
@author_email
,
author_name:
@author_name
,
source_project:
@sourc
e_project
,
source_branch_name:
@sourc
e_branch
base_project:
@bas
e_project
,
base_branch_name:
@bas
e_branch
)
end
...
...
@@ -63,7 +63,7 @@ module Files
end
def
last_commit
Gitlab
::
Git
::
Commit
.
last_for_path
(
repository
,
@
sourc
e_branch
,
@file_path
)
Gitlab
::
Git
::
Commit
.
last_for_path
(
repository
,
@
bas
e_branch
,
@file_path
)
end
def
regex_check
(
file
)
...
...
app/services/files/update_service.rb
浏览文件 @
a4b97b2c
...
...
@@ -9,8 +9,8 @@ module Files
previous_path:
@previous_path
,
author_email:
@author_email
,
author_name:
@author_name
,
source_project:
@sourc
e_project
,
source_branch_name:
@sourc
e_branch
)
base_project:
@bas
e_project
,
base_branch_name:
@bas
e_branch
)
end
private
...
...
@@ -25,7 +25,7 @@ module Files
def
last_commit
@last_commit
||=
Gitlab
::
Git
::
Commit
.
last_for_path
(
@
source_project
.
repository
,
@sourc
e_branch
,
@file_path
)
last_for_path
(
@
base_project
.
repository
,
@bas
e_branch
,
@file_path
)
end
end
end
app/services/git_operation_service.rb
浏览文件 @
a4b97b2c
...
...
@@ -46,23 +46,23 @@ class GitOperationService
end
end
# Whenever `
sourc
e_branch_name` is passed, if `branch_name` doesn't exist,
# it would be created from `
sourc
e_branch_name`.
# If `
sourc
e_project` is passed, and the branch doesn't exist,
# it would try to find the
sourc
e from it instead of current repository.
# Whenever `
bas
e_branch_name` is passed, if `branch_name` doesn't exist,
# it would be created from `
bas
e_branch_name`.
# If `
bas
e_project` is passed, and the branch doesn't exist,
# it would try to find the
bas
e from it instead of current repository.
def
with_branch
(
branch_name
,
sourc
e_branch_name:
nil
,
sourc
e_project:
repository
.
project
,
bas
e_branch_name:
nil
,
bas
e_project:
repository
.
project
,
&
block
)
check_with_branch_arguments!
(
branch_name
,
source_branch_name
,
sourc
e_project
)
branch_name
,
base_branch_name
,
bas
e_project
)
update_branch_with_hooks
(
branch_name
)
do
repository
.
with_repo_branch_commit
(
sourc
e_project
.
repository
,
sourc
e_branch_name
||
branch_name
,
bas
e_project
.
repository
,
bas
e_branch_name
||
branch_name
,
&
block
)
end
end
...
...
@@ -148,27 +148,27 @@ class GitOperationService
end
def
check_with_branch_arguments!
(
branch_name
,
source_branch_name
,
sourc
e_project
)
branch_name
,
base_branch_name
,
bas
e_project
)
return
if
repository
.
branch_exists?
(
branch_name
)
if
repository
.
project
!=
sourc
e_project
unless
sourc
e_branch_name
if
repository
.
project
!=
bas
e_project
unless
bas
e_branch_name
raise
ArgumentError
,
'Should also pass :
sourc
e_branch_name if'
+
' :
sourc
e_project is different from current project'
'Should also pass :
bas
e_branch_name if'
+
' :
bas
e_project is different from current project'
end
unless
source_project
.
repository
.
branch_exists?
(
sourc
e_branch_name
)
unless
base_project
.
repository
.
branch_exists?
(
bas
e_branch_name
)
raise
ArgumentError
,
"Cannot find branch
#{
branch_name
}
nor"
\
"
#{
sourc
e_branch_name
}
from"
\
"
#{
sourc
e_project
.
path_with_namespace
}
"
"
#{
bas
e_branch_name
}
from"
\
"
#{
bas
e_project
.
path_with_namespace
}
"
end
elsif
sourc
e_branch_name
unless
repository
.
branch_exists?
(
sourc
e_branch_name
)
elsif
bas
e_branch_name
unless
repository
.
branch_exists?
(
bas
e_branch_name
)
raise
ArgumentError
,
"Cannot find branch
#{
branch_name
}
nor"
\
"
#{
sourc
e_branch_name
}
from"
\
"
#{
bas
e_branch_name
}
from"
\
"
#{
repository
.
project
.
path_with_namespace
}
"
end
end
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录