Commit 734a4ba8 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Create and edit files in web editor via rugged

Signed-off-by: default avatarDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
parent 76ae8719
...@@ -45,7 +45,7 @@ gem "browser" ...@@ -45,7 +45,7 @@ gem "browser"
# Extracting information from a git repository # Extracting information from a git repository
# Provide access to Gitlab::Git library # Provide access to Gitlab::Git library
gem "gitlab_git", '~> 7.1.13' gem "gitlab_git", '~> 7.2.0'
# Ruby/Rack Git Smart-HTTP Server Handler # Ruby/Rack Git Smart-HTTP Server Handler
# GitLab fork with a lot of changes (improved thread-safety, better memory usage etc) # GitLab fork with a lot of changes (improved thread-safety, better memory usage etc)
......
...@@ -225,7 +225,7 @@ GEM ...@@ -225,7 +225,7 @@ GEM
mime-types (~> 1.19) mime-types (~> 1.19)
gitlab_emoji (0.1.0) gitlab_emoji (0.1.0)
gemojione (~> 2.0) gemojione (~> 2.0)
gitlab_git (7.1.13) gitlab_git (7.2.0)
activesupport (~> 4.0) activesupport (~> 4.0)
charlock_holmes (~> 0.6) charlock_holmes (~> 0.6)
gitlab-linguist (~> 3.0) gitlab-linguist (~> 3.0)
...@@ -733,7 +733,7 @@ DEPENDENCIES ...@@ -733,7 +733,7 @@ DEPENDENCIES
gitlab-grack (~> 2.0.2) gitlab-grack (~> 2.0.2)
gitlab-linguist (~> 3.0.1) gitlab-linguist (~> 3.0.1)
gitlab_emoji (~> 0.1) gitlab_emoji (~> 0.1)
gitlab_git (~> 7.1.13) gitlab_git (~> 7.2.0)
gitlab_meta (= 7.0) gitlab_meta (= 7.0)
gitlab_omniauth-ldap (= 1.2.1) gitlab_omniauth-ldap (= 1.2.1)
gollum-lib (~> 4.0.2) gollum-lib (~> 4.0.2)
......
...@@ -370,6 +370,31 @@ class Repository ...@@ -370,6 +370,31 @@ class Repository
@root_ref ||= raw_repository.root_ref @root_ref ||= raw_repository.root_ref
end end
def commit_file(user, path, content, message, ref)
path[0] = '' if path[0] == '/'
author = {
email: user.email,
name: user.name,
time: Time.now
}
options = {}
options[:committer] = author
options[:author] = author
options[:commit] = {
message: message,
branch: ref
}
options[:file] = {
content: content,
path: path
}
Gitlab::Git::Blob.commit(raw_repository, options)
end
private private
def cache def cache
......
...@@ -33,14 +33,24 @@ module Files ...@@ -33,14 +33,24 @@ module Files
end end
end end
if params[:encoding] == 'base64'
new_file_action = Gitlab::Satellite::NewFileAction.new(current_user, project, ref, file_path)
created_successfully = new_file_action.commit!(
params[:content],
params[:commit_message],
params[:encoding],
params[:new_branch]
)
else
created_successfull = repository.commit_file(
current_user,
file_path,
params[:content],
params[:commit_message],
params[:new_branch] || ref
)
end
new_file_action = Gitlab::Satellite::NewFileAction.new(current_user, project, ref, file_path)
created_successfully = new_file_action.commit!(
params[:content],
params[:commit_message],
params[:encoding],
params[:new_branch]
)
if created_successfully if created_successfully
success success
......
...@@ -19,13 +19,23 @@ module Files ...@@ -19,13 +19,23 @@ module Files
return error("You can only edit text files") return error("You can only edit text files")
end end
edit_file_action = Gitlab::Satellite::EditFileAction.new(current_user, project, ref, path) if params[:encoding] == 'base64'
edit_file_action.commit!( edit_file_action = Gitlab::Satellite::EditFileAction.new(current_user, project, ref, path)
params[:content], edit_file_action.commit!(
params[:commit_message], params[:content],
params[:encoding], params[:commit_message],
params[:new_branch] params[:encoding],
) params[:new_branch]
)
else
repository.commit_file(
current_user,
path,
params[:content],
params[:commit_message],
params[:new_branch] || ref
)
end
success success
rescue Gitlab::Satellite::CheckoutFailed => ex rescue Gitlab::Satellite::CheckoutFailed => ex
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment