summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPawel Chojnacki <pawel@chojnacki.ws>2017-02-24 14:20:20 +0100
committerPawel Chojnacki <pawel@chojnacki.ws>2017-02-24 14:20:20 +0100
commit42d31f8fe18424617da19f55feb9b10f16219812 (patch)
treedb5bdee18bb329daec31003b6626378c4fc3672a
parenta6e5b9a17821dab311e71fa83d2a973cb5361edb (diff)
downloadgitlab-shell-42d31f8fe18424617da19f55feb9b10f16219812.tar.gz
Remove git annex support
-rw-r--r--.gitlab-ci.yml1
-rw-r--r--README.md2
-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
6 files changed, 3 insertions, 121 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index e2f72e2..ff3c8c9 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -3,7 +3,6 @@ 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
- gem install --bindir /usr/local/bin bundler
- cp config.yml.example config.yml
- bundle install
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/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)