X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/3c36af3d62af5e4ee98aaafab80858182fb5cab8..5881feb407af2d4e5785ad57232cc3bfd12b86ec:/services/api/app/models/repository.rb diff --git a/services/api/app/models/repository.rb b/services/api/app/models/repository.rb index e83ac41fad..f361a49db5 100644 --- a/services/api/app/models/repository.rb +++ b/services/api/app/models/repository.rb @@ -13,23 +13,27 @@ class Repository < ArvadosModel t.add :name t.add :fetch_url t.add :push_url + t.add :clone_urls end def self.attributes_required_columns - super.merge({"push_url" => ["name"], "fetch_url" => ["name"]}) + super.merge("clone_urls" => ["name"], + "fetch_url" => ["name"], + "push_url" => ["name"]) end + # Deprecated. Use clone_urls instead. def push_url - prefix = new_record? ? Rails.configuration.uuid_prefix : uuid[0,5] - if prefix == Rails.configuration.uuid_prefix - host = Rails.configuration.git_host - end - host ||= "git.%s.arvadosapi.com" % prefix - "git@%s:%s.git" % [host, name] + ssh_clone_url end + # Deprecated. Use clone_urls instead. def fetch_url - push_url + ssh_clone_url + end + + def clone_urls + [ssh_clone_url, https_clone_url].compact end def server_path @@ -88,4 +92,24 @@ class Repository < ArvadosModel false end end + + def ssh_clone_url + _clone_url :git_repo_ssh_base, 'git@git.%s.arvadosapi.com:' + end + + def https_clone_url + _clone_url :git_repo_https_base, 'https://git.%s.arvadosapi.com/' + end + + def _clone_url config_var, default_base_fmt + configured_base = Rails.configuration.send config_var + return nil if configured_base == false + prefix = new_record? ? Rails.configuration.uuid_prefix : uuid[0,5] + if prefix == Rails.configuration.uuid_prefix and configured_base != true + base = configured_base + else + base = default_base_fmt % prefix + end + '%s%s.git' % [base, name] + end end