diff options
Diffstat (limited to 'lib/github/representation/pull_request.rb')
-rw-r--r-- | lib/github/representation/pull_request.rb | 33 |
1 files changed, 9 insertions, 24 deletions
diff --git a/lib/github/representation/pull_request.rb b/lib/github/representation/pull_request.rb index 55461097e8a..ec030ade38a 100644 --- a/lib/github/representation/pull_request.rb +++ b/lib/github/representation/pull_request.rb @@ -10,7 +10,9 @@ module Github def source_branch_name @source_branch_name ||= - if cross_project? || !source_branch_exists? + if opened? && project.repository.branch_exists?(source_branch.ref) + source_branch.ref + elsif cross_project? && opened? source_branch_name_prefixed else source_branch_ref @@ -20,7 +22,7 @@ module Github def source_branch_exists? return @source_branch_exists if defined?(@source_branch_exists) - @source_branch_exists = !cross_project? && source_branch.exists? + @source_branch_exists = project.repository.branch_exists?(source_branch_name) end def target_project @@ -55,13 +57,6 @@ module Github restore_target_branch! end - def remove_restored_branches! - return if opened? - - remove_source_branch! - remove_target_branch! - end - private def project @@ -72,8 +67,12 @@ module Github @source_branch ||= Representation::Branch.new(raw['head'], repository: project.repository) end + def source_branch_ref + "refs/merge-requests/#{iid}/head" + end + def source_branch_name_prefixed - "gh-#{target_branch_short_sha}/#{iid}/#{source_branch_user}/#{source_branch_ref}" + "gh-#{target_branch_short_sha}/#{iid}/#{source_branch_user}/#{source_branch.ref}" end def target_branch @@ -101,20 +100,6 @@ module Github target_branch.restore!(target_branch_name) end - - def remove_source_branch! - # We should remove the source/target branches only if they were - # restored. Otherwise, we'll remove branches like 'master' that - # target_branch_exists? returns true. In other words, we need - # to clean up only the restored branches that (source|target)_branch_exists? - # returns false for the first time it has been called, because of - # this that is important to memoize these values. - source_branch.remove!(source_branch_name) unless source_branch_exists? - end - - def remove_target_branch! - target_branch.remove!(target_branch_name) unless target_branch_exists? - end end end end |