Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
700a784b
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,发现更多精彩内容 >>
提交
700a784b
编写于
10月 26, 2012
作者:
R
Riyad Preukschas
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Refactor EditFileAction#update and rename it to commit!
上级
30801273
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
24 addition
and
14 deletion
+24
-14
app/controllers/tree_controller.rb
app/controllers/tree_controller.rb
+3
-3
lib/gitlab/satellite/edit_file_action.rb
lib/gitlab/satellite/edit_file_action.rb
+21
-11
未找到文件。
app/controllers/tree_controller.rb
浏览文件 @
700a784b
...
@@ -26,14 +26,14 @@ class TreeController < ProjectResourceController
...
@@ -26,14 +26,14 @@ class TreeController < ProjectResourceController
end
end
def
update
def
update
file_editor
=
Gitlab
::
Satellite
::
EditFileAction
.
new
(
current_user
,
@project
,
@ref
,
@path
)
edit_file_action
=
Gitlab
::
Satellite
::
EditFileAction
.
new
(
current_user
,
@project
,
@ref
,
@path
)
update
_status
=
file_editor
.
update
(
update
d_successfully
=
edit_file_action
.
commit!
(
params
[
:content
],
params
[
:content
],
params
[
:commit_message
],
params
[
:commit_message
],
params
[
:last_commit
]
params
[
:last_commit
]
)
)
if
update
_status
if
update
d_successfully
redirect_to
project_tree_path
(
@project
,
@id
),
notice:
"Your changes have been successfully commited"
redirect_to
project_tree_path
(
@project
,
@id
),
notice:
"Your changes have been successfully commited"
else
else
flash
[
:notice
]
=
"Your changes could not be commited, because the file has been changed"
flash
[
:notice
]
=
"Your changes could not be commited, because the file has been changed"
...
...
lib/gitlab/satellite/edit_file_action.rb
浏览文件 @
700a784b
...
@@ -5,25 +5,35 @@ module Gitlab
...
@@ -5,25 +5,35 @@ module Gitlab
# It gives you ability to make changes to files
# It gives you ability to make changes to files
# & commit this changes from GitLab UI.
# & commit this changes from GitLab UI.
class
EditFileAction
<
Action
class
EditFileAction
<
Action
attr_accessor
:path
,
:ref
attr_accessor
:
file_
path
,
:ref
def
initialize
(
user
,
project
,
ref
,
path
)
def
initialize
(
user
,
project
,
ref
,
file_
path
)
super
user
,
project
super
user
,
project
,
git_timeout:
10
.
seconds
@
path
=
path
@
file_path
=
file_
path
@ref
=
ref
@ref
=
ref
end
end
def
update
(
content
,
commit_message
,
last_commit
)
def
commit!
(
content
,
commit_message
,
last_commit
)
return
false
unless
can_edit?
(
last_commit
)
return
false
unless
can_edit?
(
last_commit
)
in_locked_and_timed_satellite
do
|
repo
|
in_locked_and_timed_satellite
do
|
repo
|
prepare_satellite!
(
repo
)
prepare_satellite!
(
repo
)
repo
.
git
.
sh
"git checkout -b
#{
ref
}
origin/
#{
ref
}
"
# create target branch in satellite at the corresponding commit from Gitolite
File
.
open
(
path
,
'w'
){
|
f
|
f
.
write
(
content
)}
repo
.
git
.
checkout
({
raise:
true
,
timeout:
true
,
b:
true
},
ref
,
"origin/
#{
ref
}
"
)
repo
.
git
.
sh
"git add ."
repo
.
git
.
sh
"git commit -am '
#{
commit_message
}
'"
# update the file in the satellite's working dir
output
=
repo
.
git
.
sh
"git push origin
#{
ref
}
"
file_path_in_satellite
=
File
.
join
(
repo
.
working_dir
,
file_path
)
File
.
open
(
file_path_in_satellite
,
'w'
)
{
|
f
|
f
.
write
(
content
)
}
# commit the changes
# will raise CommandFailed when commit fails
repo
.
git
.
commit
(
raise:
true
,
timeout:
true
,
a:
true
,
m:
commit_message
)
# push commit back to Gitolite
# will raise CommandFailed when push fails
repo
.
git
.
push
({
raise:
true
,
timeout:
true
},
:origin
,
ref
)
# everything worked
# everything worked
true
true
...
@@ -36,7 +46,7 @@ module Gitlab
...
@@ -36,7 +46,7 @@ module Gitlab
protected
protected
def
can_edit?
(
last_commit
)
def
can_edit?
(
last_commit
)
current_last_commit
=
@project
.
last_commit_for
(
ref
,
path
).
sha
current_last_commit
=
@project
.
last_commit_for
(
ref
,
file_
path
).
sha
last_commit
==
current_last_commit
last_commit
==
current_last_commit
end
end
end
end
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录