Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
42bdfd02
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,体验更适合开发者的 AI 搜索 >>
提交
42bdfd02
编写于
10月 12, 2012
作者:
V
Valeriy Sizov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
WebEditor: base implementation
上级
0b3e9fd2
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
55 addition
and
10 deletion
+55
-10
app/controllers/tree_controller.rb
app/controllers/tree_controller.rb
+8
-2
app/views/tree/edit.html.haml
app/views/tree/edit.html.haml
+7
-2
lib/gitlab/file_editor.rb
lib/gitlab/file_editor.rb
+38
-4
lib/gitlab/merge.rb
lib/gitlab/merge.rb
+2
-2
未找到文件。
app/controllers/tree_controller.rb
浏览文件 @
42bdfd02
...
...
@@ -26,8 +26,14 @@ class TreeController < ProjectResourceController
def
update
file_editor
=
Gitlab
::
FileEditor
.
new
(
current_user
,
@project
,
@ref
)
if
file_editor
.
can_edit?
(
@path
,
params
[
:last_commit
])
file_editor
.
update
(
@path
,
params
[
:content
])
update_status
=
file_editor
.
update
(
@path
,
params
[
:content
],
params
[
:commit_message
],
params
[
:last_commit
]
)
if
update_status
redirect_to
project_tree_path
(
@project
,
@id
),
:notice
=>
"File has been successfully changed"
else
flash
[
:notice
]
=
"You can't save file because it has been changed"
...
...
app/views/tree/edit.html.haml
浏览文件 @
42bdfd02
...
...
@@ -13,10 +13,15 @@
=
text_area_tag
'commit_message'
.form-actions
=
hidden_field_tag
'last_commit'
,
@last_commit
=
hidden_field_tag
'content'
=
submit
_tag
"Save"
,
class:
'btn save-btn'
=
hidden_field_tag
'content'
,
''
,
:id
=>
:file_content
=
button
_tag
"Save"
,
class:
'btn save-btn'
:javascript
var
editor
=
ace
.
edit
(
"
editor
"
);
editor
.
setTheme
(
"
ace/theme/twilight
"
);
editor
.
getSession
().
setMode
(
"
ace/mode/javascript
"
);
$
(
"
.save-btn
"
).
click
(
function
(){
$
(
"
#file_content
"
).
val
(
editor
.
getValue
());
$
(
"
.form_editor form
"
).
submit
();
});
lib/gitlab/file_editor.rb
浏览文件 @
42bdfd02
...
...
@@ -9,14 +9,48 @@ module Gitlab
self
.
ref
=
ref
end
def
update
(
path
,
content
,
commit_message
,
last_commit
)
return
false
unless
can_edit?
(
path
,
last_commit
)
Grit
::
Git
.
with_timeout
(
10
.
seconds
)
do
lock_file
=
Rails
.
root
.
join
(
"tmp"
,
"
#{
project
.
path
}
.lock"
)
File
.
open
(
lock_file
,
"w+"
)
do
|
f
|
f
.
flock
(
File
::
LOCK_EX
)
unless
project
.
satellite
.
exists?
raise
"Satellite doesn't exist"
end
project
.
satellite
.
clear
Dir
.
chdir
(
project
.
satellite
.
path
)
do
r
=
Grit
::
Repo
.
new
(
'.'
)
r
.
git
.
sh
"git reset --hard"
r
.
git
.
sh
"git fetch origin"
r
.
git
.
sh
"git config user.name
\"
#{
user
.
name
}
\"
"
r
.
git
.
sh
"git config user.email
\"
#{
user
.
email
}
\"
"
r
.
git
.
sh
"git checkout -b
#{
ref
}
origin/
#{
ref
}
"
File
.
open
(
path
,
'w'
){
|
f
|
f
.
write
(
content
)}
r
.
git
.
sh
"git add ."
r
.
git
.
sh
"git commit -am '
#{
commit_message
}
'"
output
=
r
.
git
.
sh
"git push origin
#{
ref
}
"
if
output
=~
/reject/
return
false
end
end
end
end
true
end
protected
def
can_edit?
(
path
,
last_commit
)
current_last_commit
=
@project
.
commits
(
ref
,
path
,
1
).
first
.
sha
last_commit
==
current_last_commit
end
def
update
(
path
,
content
)
true
end
end
end
lib/gitlab/merge.rb
浏览文件 @
42bdfd02
...
...
@@ -28,13 +28,13 @@ module Gitlab
def
process
Grit
::
Git
.
with_timeout
(
30
.
seconds
)
do
lock_file
=
Rails
.
root
.
join
(
"tmp"
,
"
merge_repo_
#{
project
.
path
}
.lock"
)
lock_file
=
Rails
.
root
.
join
(
"tmp"
,
"
#{
project
.
path
}
.lock"
)
File
.
open
(
lock_file
,
"w+"
)
do
|
f
|
f
.
flock
(
File
::
LOCK_EX
)
unless
project
.
satellite
.
exists?
raise
"
You should run: rake gitlab:app:enable_automerge
"
raise
"
Satellite doesn't exist
"
end
project
.
satellite
.
clear
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录