[DRE-commits] [gitlab] 01/01: update patches for git 2.11 support
Praveen Arimbrathodiyil
praveen at moszumanska.debian.org
Sat Feb 4 10:20:56 UTC 2017
This is an automated email from the git hooks/post-receive script.
praveen pushed a commit to branch master
in repository gitlab.
commit 4d3caf404e9dfe23db1ae0159468d8a753be9f4d
Author: Praveen Arimbrathodiyil <praveen at debian.org>
Date: Sat Feb 4 15:48:46 2017 +0530
update patches for git 2.11 support
---
debian/patches/0250-gitlab-shell-4.0-compat.patch | 227 ++++++++++++++++++++++
debian/patches/0300-git-2-11-support.patch | 19 +-
debian/patches/series | 1 +
3 files changed, 246 insertions(+), 1 deletion(-)
diff --git a/debian/patches/0250-gitlab-shell-4.0-compat.patch b/debian/patches/0250-gitlab-shell-4.0-compat.patch
new file mode 100644
index 0000000..51e2db2
--- /dev/null
+++ b/debian/patches/0250-gitlab-shell-4.0-compat.patch
@@ -0,0 +1,227 @@
+--- a/lib/api/internal.rb
++++ b/lib/api/internal.rb
+@@ -3,6 +3,8 @@
+ class Internal < Grape::API
+ before { authenticate_by_gitlab_shell_token! }
+
++ helpers ::API::Helpers::InternalHelpers
++
+ namespace 'internal' do
+ # Check if git command is allowed to project
+ #
+@@ -14,36 +16,6 @@
+ # ref - branch name
+ # forced_push - forced_push
+ # protocol - Git access protocol being used, e.g. HTTP or SSH
+- #
+-
+- helpers do
+- def wiki?
+- @wiki ||= params[:project].end_with?('.wiki') &&
+- !Project.find_with_namespace(params[:project])
+- end
+-
+- def project
+- @project ||= begin
+- project_path = params[:project]
+-
+- # Check for *.wiki repositories.
+- # Strip out the .wiki from the pathname before finding the
+- # project. This applies the correct project permissions to
+- # the wiki repository as well.
+- project_path.chomp!('.wiki') if wiki?
+-
+- Project.find_with_namespace(project_path)
+- end
+- end
+-
+- def ssh_authentication_abilities
+- [
+- :read_project,
+- :download_code,
+- :push_code
+- ]
+- end
+- end
+
+ post "/allowed" do
+ status 200
+--- /dev/null
++++ b/lib/api/helpers/internal_helpers.rb
+@@ -0,0 +1,57 @@
++module API
++ module Helpers
++ module InternalHelpers
++ # Project paths may be any of the following:
++ # * /repository/storage/path/namespace/project
++ # * /namespace/project
++ # * namespace/project
++ #
++ # In addition, they may have a '.git' extension and multiple namespaces
++ #
++ # Transform all these cases to 'namespace/project'
++ def clean_project_path(project_path, storage_paths = Repository.storages.values)
++ project_path = project_path.sub(/\.git\z/, '')
++
++ storage_paths.each do |storage_path|
++ storage_path = File.expand_path(storage_path)
++
++ if project_path.start_with?(storage_path)
++ project_path = project_path.sub(storage_path, '')
++ break
++ end
++ end
++
++ project_path.sub(/\A\//, '')
++ end
++
++ def project_path
++ @project_path ||= clean_project_path(params[:project])
++ end
++
++ def wiki?
++ @wiki ||= project_path.end_with?('.wiki') &&
++ !Project.find_with_namespace(project_path)
++ end
++
++ def project
++ @project ||= begin
++ # Check for *.wiki repositories.
++ # Strip out the .wiki from the pathname before finding the
++ # project. This applies the correct project permissions to
++ # the wiki repository as well.
++ project_path.chomp!('.wiki') if wiki?
++
++ Project.find_with_namespace(project_path)
++ end
++ end
++
++ def ssh_authentication_abilities
++ [
++ :read_project,
++ :download_code,
++ :push_code
++ ]
++ end
++ end
++ end
++end
+--- /dev/null
++++ b/spec/requests/api/api_internal_helpers_spec.rb
+@@ -0,0 +1,32 @@
++require 'spec_helper'
++
++describe ::API::Helpers::InternalHelpers do
++ include ::API::Helpers::InternalHelpers
++
++ describe '.clean_project_path' do
++ project = 'namespace/project'
++ namespaced = File.join('namespace2', project)
++
++ {
++ File.join(Dir.pwd, project) => project,
++ File.join(Dir.pwd, namespaced) => namespaced,
++ project => project,
++ namespaced => namespaced,
++ project + '.git' => project,
++ namespaced + '.git' => namespaced,
++ "/" + project => project,
++ "/" + namespaced => namespaced,
++ }.each do |project_path, expected|
++ context project_path do
++ # Relative and absolute storage paths, with and without trailing /
++ ['.', './', Dir.pwd, Dir.pwd + '/'].each do |storage_path|
++ context "storage path is #{storage_path}" do
++ subject { clean_project_path(project_path, [storage_path]) }
++
++ it { is_expected.to eq(expected) }
++ end
++ end
++ end
++ end
++ end
++end
+--- a/spec/requests/api/internal_spec.rb
++++ b/spec/requests/api/internal_spec.rb
+@@ -191,6 +191,26 @@
+ expect(json_response["status"]).to be_truthy
+ expect(json_response["repository_path"]).to eq(project.repository.path_to_repo)
+ end
++
++ context 'project as /namespace/project' do
++ it do
++ pull(key, project_with_repo_path('/' + project.path_with_namespace))
++
++ expect(response).to have_http_status(200)
++ expect(json_response["status"]).to be_truthy
++ expect(json_response["repository_path"]).to eq(project.repository.path_to_repo)
++ end
++ end
++
++ context 'project as namespace/project' do
++ it do
++ pull(key, project_with_repo_path(project.path_with_namespace))
++
++ expect(response).to have_http_status(200)
++ expect(json_response["status"]).to be_truthy
++ expect(json_response["repository_path"]).to eq(project.repository.path_to_repo)
++ end
++ end
+ end
+ end
+
+@@ -299,7 +319,7 @@
+
+ context 'project does not exist' do
+ it do
+- pull(key, OpenStruct.new(path_with_namespace: 'gitlab/notexists'))
++ pull(key, project_with_repo_path('gitlab/notexist'))
+
+ expect(response).to have_http_status(200)
+ expect(json_response["status"]).to be_falsey
+@@ -392,11 +412,17 @@
+ end
+ end
+
++ def project_with_repo_path(path)
++ double().tap do |fake_project|
++ allow(fake_project).to receive_message_chain('repository.path_to_repo' => path)
++ end
++ end
++
+ def pull(key, project, protocol = 'ssh')
+ post(
+ api("/internal/allowed"),
+ key_id: key.id,
+- project: project.path_with_namespace,
++ project: project.repository.path_to_repo,
+ action: 'git-upload-pack',
+ secret_token: secret_token,
+ protocol: protocol
+@@ -408,7 +434,7 @@
+ api("/internal/allowed"),
+ changes: 'd14d6c0abdd253381df51a723d58691b2ee1ab08 570e7b2abdd848b95f2f578043fc23bd6f6fd24d refs/heads/master',
+ key_id: key.id,
+- project: project.path_with_namespace,
++ project: project.repository.path_to_repo,
+ action: 'git-receive-pack',
+ secret_token: secret_token,
+ protocol: protocol
+@@ -420,7 +446,7 @@
+ api("/internal/allowed"),
+ ref: 'master',
+ key_id: key.id,
+- project: project.path_with_namespace,
++ project: project.repository.path_to_repo,
+ action: 'git-upload-archive',
+ secret_token: secret_token,
+ protocol: 'ssh'
+@@ -432,7 +458,7 @@
+ api("/internal/lfs_authenticate"),
+ key_id: key_id,
+ secret_token: secret_token,
+- project: project.path_with_namespace
++ project: project.repository.path_to_repo
+ )
+ end
+ end
diff --git a/debian/patches/0300-git-2-11-support.patch b/debian/patches/0300-git-2-11-support.patch
index 4874c75..9c1cca0 100644
--- a/debian/patches/0300-git-2-11-support.patch
+++ b/debian/patches/0300-git-2-11-support.patch
@@ -21,7 +21,7 @@ Subject: [PATCH] Merge branch '25301-git-2.11-force-push-bug' into 'master' Acce
--- a/lib/api/internal.rb
+++ b/lib/api/internal.rb
-@@ -61,7 +61,11 @@
+@@ -33,7 +33,11 @@
if wiki?
Gitlab::GitAccessWiki.new(actor, project, protocol, authentication_abilities: ssh_authentication_abilities)
else
@@ -252,3 +252,20 @@ Subject: [PATCH] Merge branch '25301-git-2.11-force-push-bug' into 'master' Acce
+ end
+ end
+end
+--- a/lib/api/helpers/internal_helpers.rb
++++ b/lib/api/helpers/internal_helpers.rb
+@@ -52,6 +52,14 @@
+ :push_code
+ ]
+ end
++
++ def parse_allowed_environment_variables
++ return if params[:env].blank?
++
++ JSON.parse(params[:env])
++
++ rescue JSON::ParserError
++ end
+ end
+ end
+ end
diff --git a/debian/patches/series b/debian/patches/series
index 070c46f..63f8726 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -8,4 +8,5 @@ pid-log-paths.patch
052-relax-grape.patch
0200-remove-order-dependency-in-label-finder-spec.patch
0210-use-jquery-ui-rails6.patch
+0250-gitlab-shell-4.0-compat.patch
0300-git-2-11-support.patch
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ruby-extras/gitlab.git
More information about the Pkg-ruby-extras-commits
mailing list