diff options
author | Lin Jen-Shin <godfat@godfat.org> | 2018-07-10 22:47:15 +0800 |
---|---|---|
committer | Lin Jen-Shin <godfat@godfat.org> | 2018-07-11 01:49:35 +0800 |
commit | e4047ad6f9ae0f4ff2ba3d19fedb8902213b9edb (patch) | |
tree | bd296993c186fd77346d24cde6aaa7bd52ccbe8d | |
parent | 5bd8bfb66caa58c821ead2c6442faf13628ce36a (diff) | |
download | gitlab-ce-e4047ad6f9ae0f4ff2ba3d19fedb8902213b9edb.tar.gz |
Find the EE branch by searching the branches
This uses a similar approach in ee_specific_check.rb
-rw-r--r-- | lib/gitlab/ee_compat_check.rb | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/lib/gitlab/ee_compat_check.rb b/lib/gitlab/ee_compat_check.rb index 8c72d00c1f3..ee604e66154 100644 --- a/lib/gitlab/ee_compat_check.rb +++ b/lib/gitlab/ee_compat_check.rb @@ -138,15 +138,23 @@ module Gitlab def ee_branch_presence_check! ee_remotes.keys.each do |remote| - [ce_branch, ee_branch_prefix, ee_branch_suffix].each do |branch| - _, status = step("Fetching #{remote}/#{branch}", %W[git fetch #{remote} #{branch}]) + output, _ = step( + "Searching #{remote}", + %W[git ls-remote #{remote} *#{minimal_ee_branch_name}*]) - if status.zero? - @ee_remote_with_branch = remote - @ee_branch_found = branch - return true - end - end + branches = + output.scan(%r{(?<=refs/heads/|refs/tags/).+}).sort_by(&:size) + + next if branches.empty? + + branch = branches.first + + step("Fetching #{remote}/#{branch}", %W[git fetch #{remote} #{branch}]) + + @ee_remote_with_branch = remote + @ee_branch_found = branch + + return true end puts @@ -271,6 +279,10 @@ module Gitlab @ee_patch_full_path ||= patches_dir.join(ee_patch_name) end + def minimal_ee_branch_name + @minimal_ee_branch_name ||= ce_branch.sub(/(\Ace\-|\-ce\z)/, '') + end + def patch_name_from_branch(branch_name) branch_name.parameterize << '.patch' end |