summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/gitlab/backend/shell.rb21
-rw-r--r--lib/tasks/gitlab/shell.rake12
2 files changed, 30 insertions, 3 deletions
diff --git a/lib/gitlab/backend/shell.rb b/lib/gitlab/backend/shell.rb
index aabc7f1e69a..7b10ab539eb 100644
--- a/lib/gitlab/backend/shell.rb
+++ b/lib/gitlab/backend/shell.rb
@@ -1,3 +1,5 @@
+require 'securerandom'
+
module Gitlab
class Shell
class AccessDenied < StandardError; end
@@ -13,6 +15,25 @@ module Gitlab
@version_required ||= File.read(Rails.root.
join('GITLAB_SHELL_VERSION')).strip
end
+
+ # Be sure to restart your server when you modify this method.
+ def setup_secret_token
+ secret_file = Rails.root.join('.gitlab_shell_secret')
+ gitlab_shell_symlink = File.join(Gitlab.config.gitlab_shell.path,
+ '.gitlab_shell_secret')
+
+ unless File.exist? secret_file
+ # Generate a new token of 16 random hexadecimal characters
+ # and store it in secret_file.
+ token = SecureRandom.hex(16)
+ File.write(secret_file, token)
+ end
+
+ if File.exist?(Gitlab.config.gitlab_shell.path) &&
+ !File.exist?(gitlab_shell_symlink)
+ FileUtils.symlink(secret_file, gitlab_shell_symlink)
+ end
+ end
end
# Init new repository
diff --git a/lib/tasks/gitlab/shell.rake b/lib/tasks/gitlab/shell.rake
index 202e55c89ad..d3cc7135c54 100644
--- a/lib/tasks/gitlab/shell.rake
+++ b/lib/tasks/gitlab/shell.rake
@@ -22,10 +22,14 @@ namespace :gitlab do
# Make sure we're on the right tag
Dir.chdir(target_dir) do
+ # Allows to change the origin URL to the fork
+ # when developing gitlab-shell.
+ sh(*%W(git remote set-url origin #{args.repo}))
+
# First try to checkout without fetching
# to avoid stalling tests if the Internet is down.
- reset = "git reset --hard $(git describe #{args.tag} || git describe origin/#{args.tag})"
- sh "#{reset} || git fetch origin && #{reset}"
+ reset = "(rev=\"$(git describe #{args.tag} || git describe \"origin/#{args.tag}\")\" && git reset --hard \"$rev\")"
+ sh "#{reset} || (git fetch --tags origin && #{reset})"
config = {
user: user,
@@ -37,7 +41,7 @@ namespace :gitlab do
bin: %x{which redis-cli}.chomp,
namespace: "resque:gitlab"
}.stringify_keys,
- log_level: "INFO",
+ log_level: Rails.env.test? ? 'DEBUG' : 'INFO',
audit_usernames: false
}.stringify_keys
@@ -66,6 +70,8 @@ namespace :gitlab do
File.open(File.join(home_dir, ".ssh", "environment"), "w+") do |f|
f.puts "PATH=#{ENV['PATH']}"
end
+
+ Gitlab::Shell.setup_secret_token
end
desc "GITLAB | Setup gitlab-shell"