summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2016-10-07 17:21:51 +0200
committerRémy Coutable <remy@rymai.me>2016-10-13 17:42:06 +0200
commit2650d5f895c6f7e56f7ba76e5fa448d38fd15d7c (patch)
tree2e39f021e5113ccf3b58ce0426457c45572b236e
parent069f2d347585a0f79ab8e3ddfb194ebbc86176c3 (diff)
downloadgitlab-ce-2650d5f895c6f7e56f7ba76e5fa448d38fd15d7c.tar.gz
Improve the branch existence and merge checksce-to-ee-merge-check-rake-task
Also add a safeguard for non-CI env. Signed-off-by: Rémy Coutable <remy@rymai.me>
-rw-r--r--.gitlab-ci.yml2
-rw-r--r--lib/tasks/ce_to_ee_merge_check.rake2
-rw-r--r--lib/tasks/gitlab/dev.rake35
3 files changed, 24 insertions, 15 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 7e2d705a888..8708eae1b2a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -216,7 +216,7 @@ rake ce_to_ee_merge_check:
- branches
except:
- tags
- - master
+ allow_failure: yes
rake db:migrate:reset:
stage: test
diff --git a/lib/tasks/ce_to_ee_merge_check.rake b/lib/tasks/ce_to_ee_merge_check.rake
index bb87f85cd9c..424e7883060 100644
--- a/lib/tasks/ce_to_ee_merge_check.rake
+++ b/lib/tasks/ce_to_ee_merge_check.rake
@@ -1,6 +1,4 @@
desc 'Checks if the branch would apply cleanly to EE'
task ce_to_ee_merge_check: :environment do
- return if defined?(Gitlab::License)
-
Rake::Task['gitlab:dev:ce_to_ee_merge_check'].invoke
end
diff --git a/lib/tasks/gitlab/dev.rake b/lib/tasks/gitlab/dev.rake
index bf17ba499bc..47bdb2d32d2 100644
--- a/lib/tasks/gitlab/dev.rake
+++ b/lib/tasks/gitlab/dev.rake
@@ -2,6 +2,9 @@ namespace :gitlab do
namespace :dev do
desc 'Checks if the branch would apply cleanly to EE'
task ce_to_ee_merge_check: :environment do
+ return if defined?(Gitlab::License)
+ return unless ENV['CI']
+
ce_repo = ENV['CI_BUILD_REPO']
ce_branch = ENV['CI_BUILD_REF_NAME']
@@ -17,27 +20,28 @@ namespace :gitlab do
# Try to merge the current tested branch to EE/master...
puts "\n => Merging #{ce_repo}/#{ce_branch} into #{ee_repo}/master\n"
- `git merge --ff-only FETCH_HEAD`
+ `git merge FETCH_HEAD`
exit 0 if $?.success?
- # Try to merge a possible <branch>-ee branch to EE/master...
- puts "\n => Merging #{ee_repo}/#{ee_branch} into #{ee_repo}/master\n"
- `git merge --ff-only #{ee_branch}`
+ # Check if the <branch>-ee branch exists...
+ puts "\n => Check if #{ee_repo}/#{ee_branch} exists\n"
+ `git rev-parse --verify #{ee_branch}`
# The <branch>-ee doesn't exist
- if $?.exitstatus == 1
+ unless $?.success?
+ puts
puts <<-MSG.strip_heredoc
- \n=================================================================
+ =================================================================
The #{ce_branch} branch cannot be merged without conflicts to the
current EE/master, and no #{ee_branch} branch was detected in
the EE repository.
- Please create a #{ee_branch} branch that includes changes
+ Please create a #{ee_branch} branch that includes changes from
#{ce_branch} but also specific changes than can be applied cleanly
to EE/master.
- You can create this branch as follow:
+ You can create this branch as follows:
1. In the EE repo:
$ git fetch origin
@@ -45,7 +49,8 @@ namespace :gitlab do
$ git checkout -b #{ee_branch} FETCH_HEAD
$ git rebase origin/master
2. At this point you will likely have conflicts, solve them, and
- continue/finish the rebase.
+ continue/finish the rebase. Note: You can squash the CE commits
+ before rebasing.
3. You can squash all the original #{ce_branch} commits into a
single "Port of #{ce_branch} to EE".
4. Push your branch to #{ee_repo}:
@@ -56,10 +61,15 @@ namespace :gitlab do
exit 1
end
+ # Try to merge the <branch>-ee branch to EE/master...
+ puts "\n => Merging #{ee_repo}/#{ee_branch} into #{ee_repo}/master\n"
+ `git merge #{ee_branch} master`
+
# The <branch>-ee cannot be merged cleanly to EE/master...
unless $?.success?
+ puts
puts <<-MSG.strip_heredoc
- \n=================================================================
+ =================================================================
The #{ce_branch} branch cannot be merged without conflicts to
EE/master, and even though the #{ee_branch} branch exists in the EE
repository, it cannot be merged without conflicts to EE/master.
@@ -73,13 +83,14 @@ namespace :gitlab do
end
puts "\n => Merging #{ce_repo}/#{ce_branch} into #{ee_repo}/master\n"
- `git merge --ff-only FETCH_HEAD`
+ `git merge FETCH_HEAD`
exit 0 if $?.success?
# The <branch>-ee can be merged cleanly to EE/master, but <branch> still
# cannot be merged cleanly to EE/master...
+ puts
puts <<-MSG.strip_heredoc
- \n=================================================================
+ =================================================================
The #{ce_branch} branch cannot be merged without conflicts to EE, and
even though the #{ee_branch} branch exists in the EE repository and
applies cleanly to EE/master, it doesn't prevent conflicts when