svn commit: r432936 - in head/www/gitlab: . files

Torsten Zuehlsdorff tz at FreeBSD.org
Tue Jan 31 16:33:08 UTC 2017


Author: tz
Date: Tue Jan 31 16:33:07 2017
New Revision: 432936
URL: https://svnweb.freebsd.org/changeset/ports/432936

Log:
  www/gitlab: Unbreak GitLab and fix web editing
  
  Switch to rubygem-jquery-ui-rails5-rails4 and
  pull in patch for safer ref updates
  
  PR:           215787
  Submitted by: swills

Added:
  head/www/gitlab/files/patch-6130   (contents, props changed)
  head/www/gitlab/files/patch-new-gitlab-git   (contents, props changed)
Modified:
  head/www/gitlab/Makefile
  head/www/gitlab/files/patch-Gemfile

Modified: head/www/gitlab/Makefile
==============================================================================
--- head/www/gitlab/Makefile	Tue Jan 31 16:31:08 2017	(r432935)
+++ head/www/gitlab/Makefile	Tue Jan 31 16:33:07 2017	(r432936)
@@ -4,7 +4,7 @@
 PORTNAME=	gitlab
 PORTVERSION=	8.11.11
 DISTVERSIONPREFIX=	v
-PORTREVISION=	6
+PORTREVISION=	7
 CATEGORIES=	www devel
 
 MAINTAINER=	tz at FreeBSD.org
@@ -133,7 +133,7 @@ RUN_DEPENDS=	git>=2.7.4:devel/git \
 	rubygem-gon>=6.1.0:www/rubygem-gon \
 	rubygem-jquery-atwho-rails-rails4>=1.3.2:www/rubygem-jquery-atwho-rails-rails4 \
 	rubygem-jquery-rails4>=4.1.0:www/rubygem-jquery-rails4 \
-	rubygem-jquery-ui-rails-rails4>=5.0.0:www/rubygem-jquery-ui-rails-rails4 \
+	rubygem-jquery-ui-rails5-rails4>=5.0.0:www/rubygem-jquery-ui-rails5-rails4 \
 	rubygem-request_store>=1.3.0:devel/rubygem-request_store \
 	rubygem-select2-rails>=3.5.9:www/rubygem-select2-rails \
 	rubygem-virtus>=1.0.1:devel/rubygem-virtus \

Added: head/www/gitlab/files/patch-6130
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/gitlab/files/patch-6130	Tue Jan 31 16:33:07 2017	(r432936)
@@ -0,0 +1,189 @@
+--- app/models/repository.rb.orig	2017-01-31 15:55:26 UTC
++++ app/models/repository.rb
+@@ -176,7 +176,7 @@ class Repository
+     before_remove_branch
+ 
+     branch = find_branch(branch_name)
+-    oldrev = branch.try(:target).try(:id)
++    oldrev = branch.try(:dereferenced_target).try(:id)
+     newrev = Gitlab::Git::BLANK_SHA
+     ref    = Gitlab::Git::BRANCH_REF_PREFIX + branch_name
+ 
+@@ -292,10 +292,10 @@ class Repository
+       # Rugged seems to throw a `ReferenceError` when given branch_names rather
+       # than SHA-1 hashes
+       number_commits_behind = raw_repository.
+-        count_commits_between(branch.target.sha, root_ref_hash)
++        count_commits_between(branch.dereferenced_target.sha, root_ref_hash)
+ 
+       number_commits_ahead = raw_repository.
+-        count_commits_between(root_ref_hash, branch.target.sha)
++        count_commits_between(root_ref_hash, branch.dereferenced_target.sha)
+ 
+       { behind: number_commits_behind, ahead: number_commits_ahead }
+     end
+@@ -674,11 +674,11 @@ class Repository
+       branches.sort_by(&:name)
+     when 'updated_desc'
+       branches.sort do |a, b|
+-        commit(b.target).committed_date <=> commit(a.target).committed_date
++        commit(b.dereferenced_target).committed_date <=> commit(a.dereferenced_target).committed_date
+       end
+     when 'updated_asc'
+       branches.sort do |a, b|
+-        commit(a.target).committed_date <=> commit(b.target).committed_date
++        commit(a.dereferenced_target).committed_date <=> commit(b.dereferenced_target).committed_date
+       end
+     else
+       branches
+@@ -884,7 +884,7 @@ class Repository
+   end
+ 
+   def revert(user, commit, base_branch, revert_tree_id = nil)
+-    source_sha = find_branch(base_branch).target.sha
++    source_sha = find_branch(base_branch).dereferenced_target.sha
+     revert_tree_id ||= check_revert_content(commit, base_branch)
+ 
+     return false unless revert_tree_id
+@@ -901,7 +901,7 @@ class Repository
+   end
+ 
+   def cherry_pick(user, commit, base_branch, cherry_pick_tree_id = nil)
+-    source_sha = find_branch(base_branch).target.sha
++    source_sha = find_branch(base_branch).dereferenced_target.sha
+     cherry_pick_tree_id ||= check_cherry_pick_content(commit, base_branch)
+ 
+     return false unless cherry_pick_tree_id
+@@ -930,7 +930,7 @@ class Repository
+   end
+ 
+   def check_revert_content(commit, base_branch)
+-    source_sha = find_branch(base_branch).target.sha
++    source_sha = find_branch(base_branch).dereferenced_target.sha
+     args       = [commit.id, source_sha]
+     args << { mainline: 1 } if commit.merge_commit?
+ 
+@@ -944,7 +944,7 @@ class Repository
+   end
+ 
+   def check_cherry_pick_content(commit, base_branch)
+-    source_sha = find_branch(base_branch).target.sha
++    source_sha = find_branch(base_branch).dereferenced_target.sha
+     args       = [commit.id, source_sha]
+     args << 1 if commit.merge_commit?
+ 
+--- lib/gitlab/popen.rb.orig	2016-11-09 05:10:18 UTC
++++ lib/gitlab/popen.rb
+@@ -21,9 +21,9 @@ module Gitlab
+       @cmd_output = ""
+       @cmd_status = 0
+       Open3.popen3(vars, *cmd, options) do |stdin, stdout, stderr, wait_thr|
+-        # We are not using stdin so we should close it, in case the command we
+-        # are running waits for input.
++        yield(stdin) if block_given?
+         stdin.close
++
+         @cmd_output << stdout.read
+         @cmd_output << stderr.read
+         @cmd_status = wait_thr.value.exitstatus
+--- spec/lib/gitlab/popen_spec.rb.orig	2016-11-09 05:10:18 UTC
++++ spec/lib/gitlab/popen_spec.rb
+@@ -40,4 +40,13 @@ describe 'Gitlab::Popen', lib: true, no_
+     it { expect(@status).to be_zero }
+     it { expect(@output).to include('spec') }
+   end
++
++  context 'use stdin' do
++    before do
++      @output, @status = @klass.new.popen(%w[cat]) { |stdin| stdin.write 'hello' }
++    end
++  
++    it { expect(@status).to be_zero }
++    it { expect(@output).to eq('hello') }
++  end
+ end
+--- spec/models/repository_spec.rb.orig	2016-11-09 05:10:18 UTC
++++ spec/models/repository_spec.rb
+@@ -443,31 +443,32 @@ describe Repository, models: true do
+ 
+   describe '#commit_with_hooks' do
+     let(:old_rev) { '0b4bc9a49b562e85de7cc9e834518ea6828729b9' } # git rev-parse feature
++    let(:new_rev) { 'a74ae73c1ccde9b974a70e82b901588071dc142a' } # commit whose parent is old_rev
+ 
+     context 'when pre hooks were successful' do
+       before do
+         expect_any_instance_of(GitHooksService).to receive(:execute).
+-          with(user, repository.path_to_repo, old_rev, sample_commit.id, 'refs/heads/feature').
++          with(user, repository.path_to_repo, old_rev, new_rev, 'refs/heads/feature').
+           and_yield.and_return(true)
+       end
+ 
+       it 'runs without errors' do
+         expect do
+-          repository.commit_with_hooks(user, 'feature') { sample_commit.id }
++          repository.commit_with_hooks(user, 'feature') { new_rev }
+         end.not_to raise_error
+       end
+ 
+       it 'ensures the autocrlf Git option is set to :input' do
+         expect(repository).to receive(:update_autocrlf_option)
+ 
+-        repository.commit_with_hooks(user, 'feature') { sample_commit.id }
++        repository.commit_with_hooks(user, 'feature') { new_rev }
+       end
+ 
+       context "when the branch wasn't empty" do
+         it 'updates the head' do
+           expect(repository.find_branch('feature').target.id).to eq(old_rev)
+-          repository.commit_with_hooks(user, 'feature') { sample_commit.id }
+-          expect(repository.find_branch('feature').target.id).to eq(sample_commit.id)
++          repository.commit_with_hooks(user, 'feature') { new_rev }
++          expect(repository.find_branch('feature').target.id).to eq(new_rev)
+         end
+       end
+     end
+@@ -477,7 +478,7 @@ describe Repository, models: true do
+         allow_any_instance_of(Gitlab::Git::Hook).to receive(:trigger).and_return([false, ''])
+ 
+         expect do
+-          repository.commit_with_hooks(user, 'feature') { sample_commit.id }
++          repository.commit_with_hooks(user, 'feature') { new_rev }
+         end.to raise_error(GitHooksService::PreReceiveError)
+       end
+     end
+@@ -485,6 +486,7 @@ describe Repository, models: true do
+     context 'when target branch is different from source branch' do
+       before do
+         allow_any_instance_of(Gitlab::Git::Hook).to receive(:trigger).and_return([true, ''])
++        allow(repository).to receive(:update_ref!)
+       end
+ 
+       it 'expires branch cache' do
+@@ -495,7 +497,7 @@ describe Repository, models: true do
+         expect(repository).to     receive(:expire_has_visible_content_cache)
+         expect(repository).to     receive(:expire_branch_count_cache)
+ 
+-        repository.commit_with_hooks(user, 'new-feature') { sample_commit.id }
++        repository.commit_with_hooks(user, 'new-feature') { new_rev }
+       end
+     end
+ 
+@@ -1268,4 +1270,18 @@ describe Repository, models: true do
+       File.delete(path)
+     end
+   end
++
++  describe '#update_ref!' do
++    it 'can create a ref' do
++      repository.update_ref!('refs/heads/foobar', 'refs/heads/master', Gitlab::Git::BLANK_SHA)
++
++      expect(repository.find_branch('foobar')).not_to be_nil
++    end
++
++    it 'raises CommitError when the ref update fails' do
++      expect do
++        repository.update_ref!('refs/heads/master', 'refs/heads/master', Gitlab::Git::BLANK_SHA)
++      end.to raise_error(Repository::CommitError)
++    end
++  end
+ end

Modified: head/www/gitlab/files/patch-Gemfile
==============================================================================
--- head/www/gitlab/files/patch-Gemfile	Tue Jan 31 16:31:08 2017	(r432935)
+++ head/www/gitlab/files/patch-Gemfile	Tue Jan 31 16:33:07 2017	(r432936)
@@ -27,21 +27,33 @@
  
  # Authentication libraries
  gem 'devise',                 '~> 4.0'
-@@ -30,12 +29,11 @@ gem 'omniauth-facebook',      '~> 3.0.0'
+@@ -26,20 +25,19 @@ gem 'omniauth-auth0',         '~> 1.4.1'
+ gem 'omniauth-azure-oauth2',  '~> 0.0.6'
+ gem 'omniauth-bitbucket',     '~> 0.0.2'
+ gem 'omniauth-cas3',          '~> 1.1.2'
+-gem 'omniauth-facebook',      '~> 3.0.0'
++gem 'omniauth-facebook',      '>= 3.0.0'
  gem 'omniauth-github',        '~> 1.1.1'
  gem 'omniauth-gitlab',        '~> 1.0.0'
  gem 'omniauth-google-oauth2', '~> 0.4.1'
 -gem 'omniauth-kerberos',      '~> 0.3.0', group: :kerberos
- gem 'omniauth-saml',          '~> 1.6.0'
+-gem 'omniauth-saml',          '~> 1.6.0'
++gem 'omniauth-saml',          '>= 1.6.0'
  gem 'omniauth-shibboleth',    '~> 1.2.0'
- gem 'omniauth-twitter',       '~> 1.2.0'
+-gem 'omniauth-twitter',       '~> 1.2.0'
++gem 'omniauth-twitter',       '>= 1.2.0'
  gem 'omniauth_crowd',         '~> 2.2.0'
 -gem 'rack-oauth2',            '~> 1.2.1'
 +gem 'rack-oauth2',            '>= 1.2.1'
  gem 'jwt'
  
  # Spam and anti-bot protection
-@@ -66,11 +64,11 @@ gem 'gollum-lib', '~> 4.2', require: fal
+-gem 'recaptcha', '~> 3.0', require: 'recaptcha/rails'
++gem 'recaptcha', '>= 3.0', require: 'recaptcha/rails'
+ gem 'akismet', '~> 2.0'
+ 
+ # Two-factor authentication
+@@ -66,21 +64,21 @@ gem 'gollum-lib', '~> 4.2', require: fal
  gem 'gollum-rugged_adapter', '~> 0.4.2', require: false
  
  # Language detection
@@ -56,8 +68,11 @@
  gem 'rack-cors',    '~> 0.4.0', require: 'rack/cors'
  
  # Pagination
-@@ -80,7 +78,7 @@ gem 'kaminari', '~> 0.17.0'
- gem 'hamlit', '~> 2.6.1'
+ gem 'kaminari', '~> 0.17.0'
+ 
+ # HAML
+-gem 'hamlit', '~> 2.6.1'
++gem 'hamlit', '>= 2.6.1'
  
  # Files attachments
 -gem 'carrierwave', '~> 0.10.0'
@@ -65,9 +80,12 @@
  
  # Drag and Drop UI
  gem 'dropzonejs-rails', '~> 0.7.1'
-@@ -109,10 +107,10 @@ gem 'task_list',     '~> 1.0.2', require
+@@ -107,25 +105,25 @@ gem 'seed-fu', '~> 2.3.5'
+ gem 'html-pipeline', '~> 1.11.0'
+ gem 'task_list',     '~> 1.0.2', require: 'task_list/railtie'
  gem 'github-markup', '~> 1.4'
- gem 'redcarpet',     '~> 3.3.3'
+-gem 'redcarpet',     '~> 3.3.3'
++gem 'redcarpet',     '>= 3.3.3'
  gem 'RedCloth',      '~> 4.3.2'
 -gem 'rdoc',          '~>3.6'
 +gem 'rdoc',          '>= 3.6'
@@ -78,8 +96,10 @@
  gem 'asciidoctor',   '~> 1.5.2'
  gem 'rouge',         '~> 2.0'
  
-@@ -121,11 +119,11 @@ gem 'rouge',         '~> 2.0'
- gem 'nokogiri', '~> 1.6.7', '>= 1.6.7.2'
+ # See https://groups.google.com/forum/#!topic/ruby-security-ann/aSbgDiwb24s
+ # and https://groups.google.com/forum/#!topic/ruby-security-ann/Dy7YiKb_pMM
+-gem 'nokogiri', '~> 1.6.7', '>= 1.6.7.2'
++gem 'nokogiri', '>= 1.6.7.2'
  
  # Diffs
 -gem 'diffy', '~> 3.0.3'
@@ -135,7 +155,7 @@
  
  # Ace editor
  gem 'ace-rails-ap', '~> 4.1.0'
-@@ -215,22 +213,22 @@ gem 'chronic_duration', '~> 0.10.6'
+@@ -215,125 +213,42 @@ gem 'chronic_duration', '~> 0.10.6'
  
  gem 'sass-rails', '~> 5.0.0'
  gem 'coffee-rails', '~> 4.1.0'
@@ -147,7 +167,8 @@
 -gem 'addressable',        '~> 2.3.8'
 +gem 'addressable',        '>= 2.3.8'
  gem 'bootstrap-sass',     '~> 3.3.0'
- gem 'font-awesome-rails', '~> 4.6.1'
+-gem 'font-awesome-rails', '~> 4.6.1'
++gem 'font-awesome-rails', '>= 4.6.1'
  gem 'gemojione',          '~> 3.0'
  gem 'gon',                '~> 6.1.0'
  gem 'jquery-atwho-rails', '~> 1.3.2'
@@ -163,7 +184,8 @@
  gem 'base32',             '~> 0.3.0'
  
  # Sentry integration
-@@ -238,89 +236,6 @@ gem 'sentry-raven', '~> 2.0.0'
+-gem 'sentry-raven', '~> 2.0.0'
++gem 'sentry-raven', '>= 2.0.0'
  
  gem 'premailer-rails', '~> 1.9.0'
  
@@ -253,8 +275,27 @@
  group :production do
    gem 'gitlab_meta', '7.0'
  end
-@@ -349,5 +264,7 @@ gem 'paranoia', '~> 2.0'
- gem 'health_check', '~> 2.1.0'
+ 
+ gem 'newrelic_rpm', '~> 3.16'
+ 
+-gem 'octokit', '~> 4.3.0'
++gem 'octokit', '>= 4.3.0'
+ 
+ gem 'mail_room', '~> 0.8'
+ 
+ gem 'email_reply_parser', '~> 0.5.8'
+ 
+-gem 'ruby-prof', '~> 0.15.9'
++gem 'ruby-prof', '>= 0.15.9'
+ 
+ ## CI
+ gem 'activerecord-session_store', '~> 1.0.0'
+@@ -346,8 +261,10 @@ gem 'oauth2', '~> 1.2.0'
+ gem 'paranoia', '~> 2.0'
+ 
+ # Health check
+-gem 'health_check', '~> 2.1.0'
++gem 'health_check', '>= 2.1.0'
  
  # System information
 -gem 'vmstat', '~> 2.2'

Added: head/www/gitlab/files/patch-new-gitlab-git
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/gitlab/files/patch-new-gitlab-git	Tue Jan 31 16:33:07 2017	(r432936)
@@ -0,0 +1,104 @@
+--- app/controllers/projects/tags_controller.rb.orig	2016-11-09 05:10:18 UTC
++++ app/controllers/projects/tags_controller.rb
+@@ -17,7 +17,7 @@ class Projects::TagsController < Project
+     @tag = @repository.find_tag(params[:id])
+ 
+     @release = @project.releases.find_or_initialize_by(tag: @tag.name)
+-    @commit = @repository.commit(@tag.target)
++    @commit = @repository.commit(@tag.dereferenced_target)
+   end
+ 
+   def create
+--- app/services/delete_branch_service.rb.orig	2016-11-09 05:10:18 UTC
++++ app/services/delete_branch_service.rb
+@@ -42,7 +42,7 @@ class DeleteBranchService < BaseService
+     Gitlab::DataBuilder::Push.build(
+       project,
+       current_user,
+-      branch.target.sha,
++      branch.dereferenced_target.sha,
+       Gitlab::Git::BLANK_SHA,
+       "#{Gitlab::Git::BRANCH_REF_PREFIX}#{branch.name}",
+       [])
+--- app/services/delete_tag_service.rb.orig	2016-11-09 05:10:18 UTC
++++ app/services/delete_tag_service.rb
+@@ -36,7 +36,7 @@ class DeleteTagService < BaseService
+     Gitlab::DataBuilder::Push.build(
+       project,
+       current_user,
+-      tag.target.sha,
++      tag.dereferenced_target.sha,
+       Gitlab::Git::BLANK_SHA,
+       "#{Gitlab::Git::TAG_REF_PREFIX}#{tag.name}",
+       [])
+--- app/services/git_tag_push_service.rb.orig	2016-11-09 05:10:18 UTC
++++ app/services/git_tag_push_service.rb
+@@ -27,8 +27,8 @@ class GitTagPushService < BaseService
+       tag_name = Gitlab::Git.ref_name(params[:ref])
+       tag = project.repository.find_tag(tag_name)
+ 
+-      if tag && tag.object_sha == params[:newrev]
+-        commit = project.commit(tag.target)
++      if tag && tag.target == params[:newrev]
++        commit = project.commit(tag.dereferenced_target)
+         commits = [commit].compact
+         message = tag.message
+       end
+--- app/views/projects/branches/_branch.html.haml.orig	2016-11-09 05:10:18 UTC
++++ app/views/projects/branches/_branch.html.haml
+@@ -1,4 +1,4 @@
+-- commit = @repository.commit(branch.target)
++- commit = @repository.commit(branch.dereferenced_target)
+ - bar_graph_width_factor = @max_commits > 0 ? 100.0/@max_commits : 0
+ - diverging_commit_counts = @repository.diverging_commit_counts(branch)
+ - number_commits_behind = diverging_commit_counts[:behind]
+--- app/views/projects/issues/_related_branches.html.haml.orig	2016-11-09 05:10:18 UTC
++++ app/views/projects/issues/_related_branches.html.haml
+@@ -4,7 +4,7 @@
+   %ul.unstyled-list
+     - @related_branches.each do |branch|
+       %li
+-        - target = @project.repository.find_branch(branch).target
++        - target = @project.repository.find_branch(branch).dereferenced_target
+         - pipeline = @project.pipeline(target.sha, branch) if target
+         - if pipeline
+           %span.related-branch-ci-status
+--- app/views/projects/tags/_tag.html.haml.orig	2016-11-09 05:10:18 UTC
++++ app/views/projects/tags/_tag.html.haml
+@@ -1,4 +1,4 @@
+-- commit = @repository.commit(tag.target)
++- commit = @repository.commit(tag.dereferenced_target)
+ - release = @releases.find { |release| release.tag == tag.name }
+ %li
+   %div
+--- lib/api/entities.rb.orig	2016-11-09 05:10:18 UTC
++++ lib/api/entities.rb
+@@ -125,7 +125,7 @@ module API
+       expose :name
+ 
+       expose :commit do |repo_branch, options|
+-        options[:project].repository.commit(repo_branch.target)
++        options[:project].repository.commit(repo_branch.dereferenced_target)
+       end
+ 
+       expose :protected do |repo_branch, options|
+@@ -449,7 +449,7 @@ module API
+       expose :name, :message
+ 
+       expose :commit do |repo_tag, options|
+-        options[:project].repository.commit(repo_tag.target)
++        options[:project].repository.commit(repo_tag.dereferenced_target)
+       end
+ 
+       expose :release, using: Entities::Release do |repo_tag, options|
+--- lib/gitlab/data_builder/push.rb.orig	2016-11-09 05:10:18 UTC
++++ lib/gitlab/data_builder/push.rb
+@@ -83,7 +83,7 @@ module Gitlab
+           tag = repository.find_tag(tag_name)
+ 
+           if tag
+-            commit = repository.commit(tag.target)
++            commit = repository.commit(tag.dereferenced_target)
+             commit.try(:sha)
+           end
+         else


More information about the svn-ports-all mailing list