summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2017-03-06 17:08:09 +0000
committerRémy Coutable <remy@rymai.me>2017-03-06 17:08:09 +0000
commit199e2d62ebea9939e48d442c6a866d26d0aede4f (patch)
tree2b53de970e41ea67777b263462b623658905e382
parenta6e5b9a17821dab311e71fa83d2a973cb5361edb (diff)
parent416c7a89c38ca19259a2b82124c2681898e3d314 (diff)
downloadgitlab-shell-199e2d62ebea9939e48d442c6a866d26d0aede4f.tar.gz
Merge branch '1648-remove-git-annex-support' into 'master' v5.0.0
Remove git annex support See merge request !122
-rw-r--r--.gitignore1
-rw-r--r--.gitlab-ci.yml4
-rw-r--r--CHANGELOG3
-rw-r--r--README.md2
-rw-r--r--VERSION2
-rw-r--r--config.yml.example8
-rw-r--r--lib/gitlab_config.rb4
-rw-r--r--lib/gitlab_shell.rb43
-rw-r--r--spec/gitlab_shell_spec.rb66
9 files changed, 10 insertions, 123 deletions
diff --git a/.gitignore b/.gitignore
index f41180b..13b4053 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,6 @@
config.yml
tmp/*
+.idea
*.log
/*.log*
authorized_keys.lock
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index e2f72e2..4b8e938 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -2,8 +2,8 @@ image: "ruby:2.3"
before_script:
- export PATH=~/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
- - apt-get update
- - apt-get install -y git-annex
+ - apt update
+ - apt install rsync -y
- gem install --bindir /usr/local/bin bundler
- cp config.yml.example config.yml
- bundle install
diff --git a/CHANGELOG b/CHANGELOG
index bae860c..e098a72 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+v5.0.0
+ - Remove support for git-annex
+
v4.1.1
- Send (a selection of) git environment variables while making the API call to `/allowed`, !112
diff --git a/README.md b/README.md
index aa44204..8ba6b3b 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,7 @@ GitLab Shell is not a Unix shell nor a replacement for Bash or Zsh.
When you access the GitLab server over ssh then GitLab Shell will:
-1. Limits you to predefined git commands (git push, git pull, git annex).
+1. Limits you to predefined git commands (git push, git pull).
1. Call the GitLab Rails API to check if you are authorized
1. It will execute the pre-receive hooks (called Git Hooks in GitLab Enterprise Edition)
1. It will execute the action you requested
diff --git a/VERSION b/VERSION
index 627a3f4..0062ac9 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-4.1.1
+5.0.0
diff --git a/config.yml.example b/config.yml.example
index cf6c91b..d5b7261 100644
--- a/config.yml.example
+++ b/config.yml.example
@@ -65,14 +65,6 @@ log_level: INFO
# incurs an extra API call on every gitlab-shell command.
audit_usernames: false
-# Enable git-annex support
-# git-annex allows managing files with git, without checking the file contents into git
-# See https://git-annex.branchable.com/ for documentation
-# If enabled, git-annex needs to be installed on the server where gitlab-shell is setup
-# For Debian and Ubuntu systems this can be done with: sudo apt-get install git-annex
-# For CentOS: sudo yum install epel-release && sudo yum install git-annex
-git_annex_enabled: false
-
# Git trace log file.
# If set, git commands receive GIT_TRACE* environment variables
# See https://git-scm.com/book/es/v2/Git-Internals-Environment-Variables#Debugging for documentation
diff --git a/lib/gitlab_config.rb b/lib/gitlab_config.rb
index a51a32c..fc9b348 100644
--- a/lib/gitlab_config.rb
+++ b/lib/gitlab_config.rb
@@ -54,10 +54,6 @@ class GitlabConfig
@config['audit_usernames'] ||= false
end
- def git_annex_enabled?
- @config['git_annex_enabled'] ||= false
- end
-
def git_trace_log_file
@config['git_trace_log_file']
end
diff --git a/lib/gitlab_shell.rb b/lib/gitlab_shell.rb
index e243aac..f2e7465 100644
--- a/lib/gitlab_shell.rb
+++ b/lib/gitlab_shell.rb
@@ -9,7 +9,7 @@ class GitlabShell
class DisallowedCommandError < StandardError; end
class InvalidRepositoryPathError < StandardError; end
- GIT_COMMANDS = %w(git-upload-pack git-receive-pack git-upload-archive git-annex-shell git-lfs-authenticate).freeze
+ GIT_COMMANDS = %w(git-upload-pack git-receive-pack git-upload-archive git-lfs-authenticate).freeze
API_COMMANDS = %w(2fa_recovery_codes)
GL_PROTOCOL = 'ssh'.freeze
@@ -71,10 +71,6 @@ class GitlabShell
raise DisallowedCommandError unless GIT_COMMANDS.include?(@command)
case @command
- when 'git-annex-shell'
- raise DisallowedCommandError unless @config.git_annex_enabled?
-
- @repo_name = args[2].sub(/\A\/~\//, '')
when 'git-lfs-authenticate'
raise DisallowedCommandError unless args.count >= 2
@repo_name = args[1]
@@ -103,25 +99,7 @@ class GitlabShell
def process_cmd(args)
return self.send("api_#{@command}") if API_COMMANDS.include?(@command)
- if @command == 'git-annex-shell'
- raise DisallowedCommandError unless @config.git_annex_enabled?
-
- # Make sure repository has git-annex enabled
- init_git_annex unless gcryptsetup?(args)
-
- parsed_args =
- args.map do |arg|
- # use full repo path
- if arg =~ /\A\/.*\.git\Z/
- repo_path
- else
- arg
- end
- end
-
- $logger.info "gitlab-shell: executing git-annex command <#{parsed_args.join(' ')}> for #{log_username}."
- exec_cmd(*parsed_args)
- elsif @command == 'git-lfs-authenticate'
+ if @command == 'git-lfs-authenticate'
GitlabMetrics.measure('lfs-authenticate') do
$logger.info "gitlab-shell: Processing LFS authentication for #{log_username}."
lfs_authenticate
@@ -150,10 +128,6 @@ class GitlabShell
'GL_PROTOCOL' => GL_PROTOCOL
}
- if @config.git_annex_enabled?
- env.merge!({ 'GIT_ANNEX_SHELL_LIMITED' => '1' })
- end
-
if git_trace_available?
env.merge!({
'GIT_TRACE' => @config.git_trace_log_file,
@@ -188,19 +162,6 @@ class GitlabShell
@config.audit_usernames ? username : "user with key #{@key_id}"
end
- def init_git_annex
- unless File.exists?(File.join(repo_path, 'annex'))
- cmd = %W(git --git-dir=#{repo_path} annex init "GitLab")
- system(*cmd, err: '/dev/null', out: '/dev/null')
- $logger.info "Enable git-annex for repository: #{repo_name}."
- end
- end
-
- def gcryptsetup?(args)
- non_dashed = args.reject { |a| a.start_with?('-') }
- non_dashed[0, 2] == %w{git-annex-shell gcryptsetup}
- end
-
def lfs_authenticate
lfs_access = api.lfs_authenticate(@key_id, @repo_name)
diff --git a/spec/gitlab_shell_spec.rb b/spec/gitlab_shell_spec.rb
index b9b8659..d19b076 100644
--- a/spec/gitlab_shell_spec.rb
+++ b/spec/gitlab_shell_spec.rb
@@ -99,20 +99,6 @@ describe GitlabShell do
end
end
- describe 'git-annex' do
- let(:repo_name) { 'dzaporozhets/gitlab.git' }
- let(:ssh_args) { %W(git-annex-shell inannex /~/dzaporozhets/gitlab.git SHA256E) }
-
- before do
- GitlabConfig.any_instance.stub(git_annex_enabled?: true)
-
- subject.send :parse_cmd, ssh_args
- end
-
- its(:repo_name) { should == 'dzaporozhets/gitlab.git' }
- its(:command) { should == 'git-annex-shell' }
- end
-
describe 'git-lfs' do
let(:repo_name) { 'dzaporozhets/gitlab.git' }
let(:ssh_args) { %W(git-lfs-authenticate dzaporozhets/gitlab.git download) }
@@ -230,58 +216,6 @@ describe GitlabShell do
end
end
- describe 'git-annex' do
- let(:repo_name) { 'dzaporozhets/gitlab.git' }
-
- before do
- GitlabConfig.any_instance.stub(git_annex_enabled?: true)
- end
-
- context 'initialization' do
- let(:ssh_cmd) { "git-annex-shell inannex /~/gitlab-ci.git SHA256E" }
-
- before do
- # Create existing project
- FileUtils.mkdir_p(repo_path)
- cmd = %W(git --git-dir=#{repo_path} init --bare)
- system(*cmd)
-
- subject.exec(ssh_cmd)
- end
-
- it 'should init git-annex' do
- File.exists?(repo_path).should be_true
- end
-
- context 'with git-annex-shell gcryptsetup' do
- let(:ssh_cmd) { "git-annex-shell gcryptsetup /~/dzaporozhets/gitlab.git" }
-
- it 'should not init git-annex' do
- File.exists?(File.join(tmp_repos_path, 'dzaporozhets/gitlab.git/annex')).should be_false
- end
- end
-
- context 'with git-annex and relative path without ~/' do
- # Using a SSH URL on a custom port will generate /dzaporozhets/gitlab.git
- let(:ssh_cmd) { "git-annex-shell inannex dzaporozhets/gitlab.git SHA256E" }
-
- it 'should init git-annex' do
- File.exists?(File.join(tmp_repos_path, "dzaporozhets/gitlab.git/annex")).should be_true
- end
- end
- end
-
- context 'execution' do
- let(:ssh_cmd) { "git-annex-shell commit /~/gitlab-ci.git SHA256" }
-
- after { subject.exec(ssh_cmd) }
-
- it "should execute the command" do
- subject.should_receive(:exec_cmd).with("git-annex-shell", "commit", repo_path, "SHA256")
- end
- end
- end
-
context 'with an API command' do
before do
allow(subject).to receive(:continue?).and_return(true)