summaryrefslogtreecommitdiff
path: root/scripts/ee-specific-lines-check
blob: 4114575168ced3d8496a410295e01c5ce85685be (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/usr/bin/env ruby

require_relative 'ee_specific_check/ee_specific_check'

include EESpecificCheck # rubocop:disable Style/MixinUsage
git_version

base = find_compare_base

current_numstat = updated_diff_numstat(base.ce_base, base.ee_base)
updated_numstat = updated_diff_numstat(base.ce_head, base.ee_head)

offenses = updated_numstat.select do |file, updated_delta|
  current_delta = current_numstat[file]

  more_lines = updated_delta > current_delta

  more_lines &&
    !WHITELIST.any? { |pattern| Dir.glob(pattern, File::FNM_DOTMATCH).include?(file) }
end

if offenses.empty?
  say "🎉 All good, congrats! 🎉"
else
  puts

  offenses.each do |(file, delta)|
    puts "* 💥 #{file} has #{delta - current_numstat[file]} updated lines that differ between EE and CE! 💥"
  end

  say <<~MESSAGE
    ℹ️ Make sure all lines in shared files have been updated in your backport merge request and the branch name includes #{minimal_ce_branch_name}.
    ℹ️ Consider using an EE module to add the features you want.
    ℹ️ See this for detail: https://docs.gitlab.com/ee/development/ee_features.html#ee-features-based-on-ce-features
  MESSAGE
end

remove_remotes

say "ℹ️ For more information on why, see https://gitlab.com/gitlab-org/gitlab/issues/2952"

exit(offenses.size)