From 143fa8e7ca9d4c16f5008d2fe123886578bb0015 Mon Sep 17 00:00:00 2001 From: tiagonbotelho <tiagonbotelho@hotmail.com> Date: Mon, 4 Jul 2016 11:32:57 +0100 Subject: [PATCH] creates the update_file method in repository.rb and applies changes accordingly --- app/controllers/concerns/creates_commit.rb | 3 ++- app/models/repository.rb | 30 ++++++++++++++++++++++ app/services/files/base_service.rb | 1 + app/services/files/update_service.rb | 2 +- 4 files changed, 34 insertions(+), 2 deletions(-) diff --git a/app/controllers/concerns/creates_commit.rb b/app/controllers/concerns/creates_commit.rb index 84b4a30c6d5..036805306f2 100644 --- a/app/controllers/concerns/creates_commit.rb +++ b/app/controllers/concerns/creates_commit.rb @@ -8,7 +8,8 @@ module CreatesCommit source_project: @project, source_branch: @ref, target_branch: @target_branch, - file_path: @path + file_path: @path, + previous_path: @previous_path ) result = service.new(@tree_edit_project, current_user, commit_params).execute diff --git a/app/models/repository.rb b/app/models/repository.rb index 078ca8f4e13..a5fb13eb662 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -741,6 +741,36 @@ class Repository end end + def update_file(user, path, previous_path, content, message, branch, update) + commit_with_hooks(user, branch) do |ref| + committer = user_to_committer(user) + options = {} + options[:committer] = committer + options[:author] = committer + options[:commit] = { + message: message, + branch: ref, + } + + if previous_path + options[:file] = { + path: previous_path + } + + + Gitlab::Git::Blob.remove(raw_repository, options) + end + + options[:file] = { + content: content, + path: path, + update: update + } + + Gitlab::Git::Blob.commit(raw_repository, options) + end + end + def remove_file(user, path, message, branch) commit_with_hooks(user, branch) do |ref| committer = user_to_committer(user) diff --git a/app/services/files/base_service.rb b/app/services/files/base_service.rb index 4bdb68a3698..6e46bcea24c 100644 --- a/app/services/files/base_service.rb +++ b/app/services/files/base_service.rb @@ -9,6 +9,7 @@ module Files @commit_message = params[:commit_message] @file_path = params[:file_path] + @previous_path = params[:previous_path] @file_content = if params[:file_content_encoding] == 'base64' Base64.decode64(params[:file_content]) else diff --git a/app/services/files/update_service.rb b/app/services/files/update_service.rb index 52451d72b57..6d015642b91 100644 --- a/app/services/files/update_service.rb +++ b/app/services/files/update_service.rb @@ -4,7 +4,7 @@ module Files class UpdateService < Files::BaseService def commit # Need to update file_path with the new filename - repository.commit_file(current_user, @file_path, @file_content, @commit_message, @target_branch, true) + repository.update_file(current_user, @file_path, @previous_path, @file_content, @commit_message, @target_branch, true) end end end -- GitLab