From d8fe2fac7e681ddbff3c7a5338f939eb2d540e38 Mon Sep 17 00:00:00 2001 From: Lin Jen-Shin <godfat@godfat.org> Date: Tue, 15 Nov 2016 07:22:50 +0800 Subject: [PATCH] Make sure we have the branch on the other project --- app/models/project.rb | 11 +++++++++++ app/services/create_branch_service.rb | 10 +--------- app/services/files/base_service.rb | 10 +++++++++- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/app/models/project.rb b/app/models/project.rb index 94aabafce20..1208e5da6fa 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -988,6 +988,17 @@ class Project < ActiveRecord::Base Gitlab::UploadsTransfer.new.rename_project(path_was, path, namespace.path) end + def fetch_ref(source_project, branch_name, ref) + repository.fetch_ref( + source_project.repository.path_to_repo, + "refs/heads/#{ref}", + "refs/heads/#{branch_name}" + ) + + repository.after_create_branch + repository.find_branch(branch_name) + end + # Expires various caches before a project is renamed. def expire_caches_before_rename(old_path) repo = Repository.new(old_path, self) diff --git a/app/services/create_branch_service.rb b/app/services/create_branch_service.rb index f4270a09928..ecb5994fab8 100644 --- a/app/services/create_branch_service.rb +++ b/app/services/create_branch_service.rb @@ -7,15 +7,7 @@ class CreateBranchService < BaseService return failure if failure new_branch = if source_project != @project - repository.fetch_ref( - source_project.repository.path_to_repo, - "refs/heads/#{ref}", - "refs/heads/#{branch_name}" - ) - - repository.after_create_branch - - repository.find_branch(branch_name) + @project.fetch_ref(source_project, branch_name, ref) else repository.add_branch(current_user, branch_name, ref) end diff --git a/app/services/files/base_service.rb b/app/services/files/base_service.rb index 6779bd2818a..fd62246eddb 100644 --- a/app/services/files/base_service.rb +++ b/app/services/files/base_service.rb @@ -23,7 +23,7 @@ module Files validate # Create new branch if it different from source_branch - validate_target_branch if different_branch? + ensure_target_branch if different_branch? result = commit if result @@ -71,6 +71,14 @@ module Files end end + def ensure_target_branch + validate_target_branch + + if @source_project != project + @project.fetch_ref(@source_project, @target_branch, @source_branch) + end + end + def validate_target_branch result = ValidateNewBranchService.new(project, current_user). execute(@target_branch) -- GitLab