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
700a784b
Commit
700a784b
authored
Oct 26, 2012
by
Riyad Preukschas
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Refactor EditFileAction#update and rename it to commit!
parent
30801273
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
24 additions
and
14 deletions
+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
No files found.
app/controllers/tree_controller.rb
View file @
700a784b
...
...
@@ -26,14 +26,14 @@ class TreeController < ProjectResourceController
end
def
update
file_editor
=
Gitlab
::
Satellite
::
EditFileAction
.
new
(
current_user
,
@project
,
@ref
,
@path
)
update
_status
=
file_editor
.
update
(
edit_file_action
=
Gitlab
::
Satellite
::
EditFileAction
.
new
(
current_user
,
@project
,
@ref
,
@path
)
update
d_successfully
=
edit_file_action
.
commit!
(
params
[
:content
],
params
[
:commit_message
],
params
[
:last_commit
]
)
if
update
_status
if
update
d_successfully
redirect_to
project_tree_path
(
@project
,
@id
),
notice:
"Your changes have been successfully commited"
else
flash
[
:notice
]
=
"Your changes could not be commited, because the file has been changed"
...
...
lib/gitlab/satellite/edit_file_action.rb
View file @
700a784b
...
...
@@ -5,25 +5,35 @@ module Gitlab
# It gives you ability to make changes to files
# & commit this changes from GitLab UI.
class
EditFileAction
<
Action
attr_accessor
:path
,
:ref
attr_accessor
:
file_
path
,
:ref
def
initialize
(
user
,
project
,
ref
,
path
)
super
user
,
project
@
path
=
path
def
initialize
(
user
,
project
,
ref
,
file_
path
)
super
user
,
project
,
git_timeout:
10
.
seconds
@
file_path
=
file_
path
@ref
=
ref
end
def
update
(
content
,
commit_message
,
last_commit
)
def
commit!
(
content
,
commit_message
,
last_commit
)
return
false
unless
can_edit?
(
last_commit
)
in_locked_and_timed_satellite
do
|
repo
|
prepare_satellite!
(
repo
)
repo
.
git
.
sh
"git checkout -b
#{
ref
}
origin/
#{
ref
}
"
File
.
open
(
path
,
'w'
){
|
f
|
f
.
write
(
content
)}
repo
.
git
.
sh
"git add ."
repo
.
git
.
sh
"git commit -am '
#{
commit_message
}
'"
output
=
repo
.
git
.
sh
"git push origin
#{
ref
}
"
# create target branch in satellite at the corresponding commit from Gitolite
repo
.
git
.
checkout
({
raise:
true
,
timeout:
true
,
b:
true
},
ref
,
"origin/
#{
ref
}
"
)
# update the file in the satellite's working dir
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
true
...
...
@@ -36,7 +46,7 @@ module Gitlab
protected
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
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