+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
class Repository < ArvadosBase
def self.creatable?
- current_user and current_user.is_admin
+ false
end
def attributes_for_display
super.reject { |x| x[0] == 'fetch_url' }
subtree
end
- # git 2.1.4 does not use credential helpers reliably, see #5416
- def self.disable_repository_browsing?
- return false if Rails.configuration.use_git2_despite_bug_risk
- if @buggy_git_version.nil?
- @buggy_git_version = /git version 2/ =~ `git version`
- end
- @buggy_git_version
+ # http_fetch_url returns the first http:// or https:// url (if any)
+ # in the api response's clone_urls attribute.
+ def http_fetch_url
+ clone_urls.andand.select { |u| /^http/ =~ u }.first
end
protected
@fresh = true
end
- # http_fetch_url returns the first http:// or https:// url (if any)
- # in the api response's clone_urls attribute.
- def http_fetch_url
- clone_urls.andand.select { |u| /^http/ =~ u }.first
- end
-
# run_git sets up the ARVADOS_API_TOKEN environment variable,
# creates a local git directory for this repository if necessary,
# executes "git --git-dir localgitdir {args to run_git}", and
# non-zero.
def run_git *gitcmd
if not @workdir
- workdir = File.expand_path uuid+'.git', Rails.configuration.repository_cache
+ workdir = File.expand_path uuid+'.git', Rails.configuration.Workbench.RepositoryCache
if not File.exists? workdir
- FileUtils.mkdir_p Rails.configuration.repository_cache
+ FileUtils.mkdir_p Rails.configuration.Workbench.RepositoryCache
[['git', 'init', '--bare', workdir],
].each do |cmd|
- system *cmd
+ system(*cmd, in: "/dev/null")
raise GitCommandError.new($?.to_s) unless $?.exitstatus == 0
end
end
"credential.#{http_fetch_url}.username", 'none'],
['git', '--git-dir', @workdir, 'config', '--local',
"credential.#{http_fetch_url}.helper",
- '!token(){ echo password="$ARVADOS_API_TOKEN"; }; token'],
+ '!cred(){ cat >/dev/null; if [ "$1" = get ]; then echo password=$ARVADOS_API_TOKEN; fi; };cred'],
['git', '--git-dir', @workdir, 'config', '--local',
'http.sslVerify',
- Rails.configuration.arvados_insecure_https ? 'false' : 'true'],
+ Rails.configuration.TLS.Insecure ? 'false' : 'true'],
].each do |cmd|
- system *cmd
+ system(*cmd, in: "/dev/null")
raise GitCommandError.new($?.to_s) unless $?.exitstatus == 0
end
env = {}.
merge(ENV).
- merge('ARVADOS_API_TOKEN' => Thread.current[:arvados_api_token])
+ merge('ARVADOS_API_TOKEN' => Thread.current[:arvados_api_token],
+ 'GIT_TERMINAL_PROMPT' => '0')
cmd = ['git', '--git-dir', @workdir] + gitcmd
- io = IO.popen(env, cmd, err: [:child, :out])
+ io = IO.popen(env, cmd, err: [:child, :out], in: "/dev/null")
output = io.read
io.close
# "If [io] is opened by IO.popen, close sets $?." --ruby 2.2.1 docs