summaryrefslogtreecommitdiff
path: root/lib/github/representation/pull_request.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/github/representation/pull_request.rb')
-rw-r--r--lib/github/representation/pull_request.rb33
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