Merge branch 'zj-remove-gitorious' into 'master'
Remove gitorious ## What does this MR do? Remove gitorious as import source ## Are there points in the code the reviewer needs to double check? Did I remove everything? ## Why was this MR needed? This button yielded a 404 ## What are the relevant issue numbers? Closes #17062 /cc @JobV See merge request !5866
This commit is contained in:
commit
4c17e1b3db
19 changed files with 12 additions and 339 deletions
|
@ -7,6 +7,7 @@ v 8.12.0 (unreleased)
|
|||
- Set path for all JavaScript cookies to honor GitLab's subdirectory setting !5627 (Mike Greiling)
|
||||
- Optimistic locking for Issues and Merge Requests (title and description overriding prevention)
|
||||
- Add `wiki_page_events` to project hook APIs (Ben Boeckel)
|
||||
- Remove Gitorious import
|
||||
- Add Sentry logging to API calls
|
||||
- Automatically expand hidden discussions when accessed by a permalink !5585 (Mike Greiling)
|
||||
- Added tests for diff notes
|
||||
|
|
19
app/assets/stylesheets/pages/import.scss
vendored
19
app/assets/stylesheets/pages/import.scss
vendored
|
@ -1,22 +1,3 @@
|
|||
i.icon-gitorious {
|
||||
display: inline-block;
|
||||
background-position: 0 0;
|
||||
background-size: contain;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
i.icon-gitorious-small {
|
||||
background-image: image-url('gitorious-logo-blue.png');
|
||||
width: 13px;
|
||||
height: 13px;
|
||||
}
|
||||
|
||||
i.icon-gitorious-big {
|
||||
background-image: image-url('gitorious-logo-black.png');
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
.import-jobs-from-col,
|
||||
.import-jobs-to-col {
|
||||
width: 40%;
|
||||
|
|
|
@ -25,7 +25,7 @@ class ApplicationController < ActionController::Base
|
|||
protect_from_forgery with: :exception
|
||||
|
||||
helper_method :abilities, :can?, :current_application_settings
|
||||
helper_method :import_sources_enabled?, :github_import_enabled?, :github_import_configured?, :gitlab_import_enabled?, :gitlab_import_configured?, :bitbucket_import_enabled?, :bitbucket_import_configured?, :gitorious_import_enabled?, :google_code_import_enabled?, :fogbugz_import_enabled?, :git_import_enabled?, :gitlab_project_import_enabled?
|
||||
helper_method :import_sources_enabled?, :github_import_enabled?, :github_import_configured?, :gitlab_import_enabled?, :gitlab_import_configured?, :bitbucket_import_enabled?, :bitbucket_import_configured?, :google_code_import_enabled?, :fogbugz_import_enabled?, :git_import_enabled?, :gitlab_project_import_enabled?
|
||||
|
||||
rescue_from Encoding::CompatibilityError do |exception|
|
||||
log_exception(exception)
|
||||
|
@ -250,10 +250,6 @@ class ApplicationController < ActionController::Base
|
|||
Gitlab::OAuth::Provider.enabled?(:bitbucket) && Gitlab::BitbucketImport.public_key.present?
|
||||
end
|
||||
|
||||
def gitorious_import_enabled?
|
||||
current_application_settings.import_sources.include?('gitorious')
|
||||
end
|
||||
|
||||
def google_code_import_enabled?
|
||||
current_application_settings.import_sources.include?('google_code')
|
||||
end
|
||||
|
|
|
@ -1,47 +0,0 @@
|
|||
class Import::GitoriousController < Import::BaseController
|
||||
before_action :verify_gitorious_import_enabled
|
||||
|
||||
def new
|
||||
redirect_to client.authorize_url(callback_import_gitorious_url)
|
||||
end
|
||||
|
||||
def callback
|
||||
session[:gitorious_repos] = params[:repos]
|
||||
redirect_to status_import_gitorious_path
|
||||
end
|
||||
|
||||
def status
|
||||
@repos = client.repos
|
||||
|
||||
@already_added_projects = current_user.created_projects.where(import_type: "gitorious")
|
||||
already_added_projects_names = @already_added_projects.pluck(:import_source)
|
||||
|
||||
@repos.reject! { |repo| already_added_projects_names.include? repo.full_name }
|
||||
end
|
||||
|
||||
def jobs
|
||||
jobs = current_user.created_projects.where(import_type: "gitorious").to_json(only: [:id, :import_status])
|
||||
render json: jobs
|
||||
end
|
||||
|
||||
def create
|
||||
@repo_id = params[:repo_id]
|
||||
repo = client.repo(@repo_id)
|
||||
@target_namespace = params[:new_namespace].presence || repo.namespace
|
||||
@project_name = repo.name
|
||||
|
||||
namespace = get_or_create_namespace || (render and return)
|
||||
|
||||
@project = Gitlab::GitoriousImport::ProjectCreator.new(repo, namespace, current_user).execute
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def client
|
||||
@client ||= Gitlab::GitoriousImport::Client.new(session[:gitorious_repos])
|
||||
end
|
||||
|
||||
def verify_gitorious_import_enabled
|
||||
render_404 unless gitorious_import_enabled?
|
||||
end
|
||||
end
|
|
@ -146,7 +146,7 @@ class ApplicationSetting < ActiveRecord::Base
|
|||
default_project_visibility: Settings.gitlab.default_projects_features['visibility_level'],
|
||||
default_snippet_visibility: Settings.gitlab.default_projects_features['visibility_level'],
|
||||
domain_whitelist: Settings.gitlab['domain_whitelist'],
|
||||
import_sources: %w[github bitbucket gitlab gitorious google_code fogbugz git gitlab_project],
|
||||
import_sources: %w[github bitbucket gitlab google_code fogbugz git gitlab_project],
|
||||
shared_runners_enabled: Settings.gitlab_ci['shared_runners_enabled'],
|
||||
max_artifacts_size: Settings.artifacts['max_size'],
|
||||
require_two_factor_authentication: false,
|
||||
|
|
|
@ -1,54 +0,0 @@
|
|||
- page_title "Gitorious import"
|
||||
- header_title "Projects", root_path
|
||||
%h3.page-title
|
||||
%i.icon-gitorious.icon-gitorious-big
|
||||
Import projects from Gitorious.org
|
||||
|
||||
%p.light
|
||||
Select projects you want to import.
|
||||
%hr
|
||||
%p
|
||||
= button_tag class: "btn btn-import btn-success js-import-all" do
|
||||
Import all projects
|
||||
= icon("spinner spin", class: "loading-icon")
|
||||
|
||||
.table-responsive
|
||||
%table.table.import-jobs
|
||||
%colgroup.import-jobs-from-col
|
||||
%colgroup.import-jobs-to-col
|
||||
%colgroup.import-jobs-status-col
|
||||
%thead
|
||||
%tr
|
||||
%th From Gitorious.org
|
||||
%th To GitLab
|
||||
%th Status
|
||||
%tbody
|
||||
- @already_added_projects.each do |project|
|
||||
%tr{id: "project_#{project.id}", class: "#{project_status_css_class(project.import_status)}"}
|
||||
%td
|
||||
= link_to project.import_source, "https://gitorious.org/#{project.import_source}", target: "_blank"
|
||||
%td
|
||||
= link_to project.path_with_namespace, [project.namespace.becomes(Namespace), project]
|
||||
%td.job-status
|
||||
- if project.import_status == 'finished'
|
||||
%span
|
||||
%i.fa.fa-check
|
||||
done
|
||||
- elsif project.import_status == 'started'
|
||||
%i.fa.fa-spinner.fa-spin
|
||||
started
|
||||
- else
|
||||
= project.human_import_status_name
|
||||
|
||||
- @repos.each do |repo|
|
||||
%tr{id: "repo_#{repo.id}"}
|
||||
%td
|
||||
= link_to repo.full_name, "https://gitorious.org/#{repo.full_name}", target: "_blank"
|
||||
%td.import-target
|
||||
= repo.full_name
|
||||
%td.import-actions.job-status
|
||||
= button_tag class: "btn btn-import js-add-to-import" do
|
||||
Import
|
||||
= icon("spinner spin", class: "loading-icon")
|
||||
|
||||
.js-importer-status{ data: { jobs_import_path: "#{jobs_import_gitorious_path}", import_path: "#{import_gitorious_path}" } }
|
|
@ -59,11 +59,6 @@
|
|||
= icon('gitlab', text: 'GitLab.com')
|
||||
- unless gitlab_import_configured?
|
||||
= render 'gitlab_import_modal'
|
||||
%div
|
||||
- if gitorious_import_enabled?
|
||||
= link_to new_import_gitorious_path, class: 'btn import_gitorious' do
|
||||
%i.icon-gitorious.icon-gitorious-small
|
||||
Gitorious.org
|
||||
%div
|
||||
- if google_code_import_enabled?
|
||||
= link_to new_import_google_code_path, class: 'btn import_google_code' do
|
||||
|
|
|
@ -212,7 +212,7 @@ Settings.gitlab.default_projects_features['builds'] = true if Settin
|
|||
Settings.gitlab.default_projects_features['container_registry'] = true if Settings.gitlab.default_projects_features['container_registry'].nil?
|
||||
Settings.gitlab.default_projects_features['visibility_level'] = Settings.send(:verify_constant, Gitlab::VisibilityLevel, Settings.gitlab.default_projects_features['visibility_level'], Gitlab::VisibilityLevel::PRIVATE)
|
||||
Settings.gitlab['domain_whitelist'] ||= []
|
||||
Settings.gitlab['import_sources'] ||= %w[github bitbucket gitlab gitorious google_code fogbugz git gitlab_project]
|
||||
Settings.gitlab['import_sources'] ||= %w[github bitbucket gitlab google_code fogbugz git gitlab_project]
|
||||
Settings.gitlab['trusted_proxies'] ||= []
|
||||
|
||||
#
|
||||
|
|
|
@ -157,12 +157,6 @@ Rails.application.routes.draw do
|
|||
get :jobs
|
||||
end
|
||||
|
||||
resource :gitorious, only: [:create, :new], controller: :gitorious do
|
||||
get :status
|
||||
get :callback
|
||||
get :jobs
|
||||
end
|
||||
|
||||
resource :google_code, only: [:create, :new], controller: :google_code do
|
||||
get :status
|
||||
post :callback
|
||||
|
|
|
@ -115,7 +115,7 @@ In this flow it is not common to have a production branch (or git flow master br
|
|||
|
||||
Merge or pull requests are created in a git management application and ask an assigned person to merge two branches.
|
||||
Tools such as GitHub and Bitbucket choose the name pull request since the first manual action would be to pull the feature branch.
|
||||
Tools such as GitLab and Gitorious choose the name merge request since that is the final action that is requested of the assignee.
|
||||
Tools such as GitLab and others choose the name merge request since that is the final action that is requested of the assignee.
|
||||
In this article we'll refer to them as merge requests.
|
||||
|
||||
If you work on a feature branch for more than a few hours it is good to share the intermediate result with the rest of the team.
|
||||
|
|
|
@ -18,7 +18,6 @@ class Spinach::Features::NewProject < Spinach::FeatureSteps
|
|||
expect(page).to have_link('GitHub')
|
||||
expect(page).to have_link('Bitbucket')
|
||||
expect(page).to have_link('GitLab.com')
|
||||
expect(page).to have_link('Gitorious.org')
|
||||
expect(page).to have_link('Google Code')
|
||||
expect(page).to have_link('Repo by URL')
|
||||
end
|
||||
|
|
|
@ -41,7 +41,7 @@ module Gitlab
|
|||
default_project_visibility: Settings.gitlab.default_projects_features['visibility_level'],
|
||||
default_snippet_visibility: Settings.gitlab.default_projects_features['visibility_level'],
|
||||
domain_whitelist: Settings.gitlab['domain_whitelist'],
|
||||
import_sources: %w[github bitbucket gitlab gitorious google_code fogbugz git gitlab_project],
|
||||
import_sources: %w[github bitbucket gitlab google_code fogbugz git gitlab_project],
|
||||
shared_runners_enabled: Settings.gitlab_ci['shared_runners_enabled'],
|
||||
max_artifacts_size: Settings.artifacts['max_size'],
|
||||
require_two_factor_authentication: false,
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
module Gitlab
|
||||
module GitoriousImport
|
||||
GITORIOUS_HOST = "https://gitorious.org"
|
||||
end
|
||||
end
|
|
@ -1,29 +0,0 @@
|
|||
module Gitlab
|
||||
module GitoriousImport
|
||||
class Client
|
||||
attr_reader :repo_list
|
||||
|
||||
def initialize(repo_list)
|
||||
@repo_list = repo_list
|
||||
end
|
||||
|
||||
def authorize_url(redirect_uri)
|
||||
"#{GITORIOUS_HOST}/gitlab-import?callback_url=#{redirect_uri}"
|
||||
end
|
||||
|
||||
def repos
|
||||
@repos ||= repo_names.map { |full_name| GitoriousImport::Repository.new(full_name) }
|
||||
end
|
||||
|
||||
def repo(id)
|
||||
repos.find { |repo| repo.id == id }
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def repo_names
|
||||
repo_list.to_s.split(',').map(&:strip).reject(&:blank?)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,27 +0,0 @@
|
|||
module Gitlab
|
||||
module GitoriousImport
|
||||
class ProjectCreator
|
||||
attr_reader :repo, :namespace, :current_user
|
||||
|
||||
def initialize(repo, namespace, current_user)
|
||||
@repo = repo
|
||||
@namespace = namespace
|
||||
@current_user = current_user
|
||||
end
|
||||
|
||||
def execute
|
||||
::Projects::CreateService.new(
|
||||
current_user,
|
||||
name: repo.name,
|
||||
path: repo.path,
|
||||
description: repo.description,
|
||||
namespace_id: namespace.id,
|
||||
visibility_level: Gitlab::VisibilityLevel::PUBLIC,
|
||||
import_type: "gitorious",
|
||||
import_source: repo.full_name,
|
||||
import_url: repo.import_url
|
||||
).execute
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,35 +0,0 @@
|
|||
module Gitlab
|
||||
module GitoriousImport
|
||||
Repository = Struct.new(:full_name) do
|
||||
def id
|
||||
Digest::SHA1.hexdigest(full_name)
|
||||
end
|
||||
|
||||
def namespace
|
||||
segments.first
|
||||
end
|
||||
|
||||
def path
|
||||
segments.last
|
||||
end
|
||||
|
||||
def name
|
||||
path.titleize
|
||||
end
|
||||
|
||||
def description
|
||||
""
|
||||
end
|
||||
|
||||
def import_url
|
||||
"#{GITORIOUS_HOST}/#{full_name}.git"
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def segments
|
||||
full_name.split('/')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -14,13 +14,12 @@ module Gitlab
|
|||
|
||||
def options
|
||||
{
|
||||
'GitHub' => 'github',
|
||||
'Bitbucket' => 'bitbucket',
|
||||
'GitLab.com' => 'gitlab',
|
||||
'Gitorious.org' => 'gitorious',
|
||||
'Google Code' => 'google_code',
|
||||
'FogBugz' => 'fogbugz',
|
||||
'Repo by URL' => 'git',
|
||||
'GitHub' => 'github',
|
||||
'Bitbucket' => 'bitbucket',
|
||||
'GitLab.com' => 'gitlab',
|
||||
'Google Code' => 'google_code',
|
||||
'FogBugz' => 'fogbugz',
|
||||
'Repo by URL' => 'git',
|
||||
'GitLab export' => 'gitlab_project'
|
||||
}
|
||||
end
|
||||
|
|
|
@ -1,69 +0,0 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Import::GitoriousController do
|
||||
include ImportSpecHelper
|
||||
|
||||
let(:user) { create(:user) }
|
||||
|
||||
before do
|
||||
sign_in(user)
|
||||
end
|
||||
|
||||
describe "GET new" do
|
||||
it "redirects to import endpoint on gitorious.org" do
|
||||
get :new
|
||||
|
||||
expect(controller).to redirect_to("https://gitorious.org/gitlab-import?callback_url=http://test.host/import/gitorious/callback")
|
||||
end
|
||||
end
|
||||
|
||||
describe "GET callback" do
|
||||
it "stores repo list in session" do
|
||||
get :callback, repos: 'foo/bar,baz/qux'
|
||||
|
||||
expect(session[:gitorious_repos]).to eq('foo/bar,baz/qux')
|
||||
end
|
||||
end
|
||||
|
||||
describe "GET status" do
|
||||
before do
|
||||
@repo = OpenStruct.new(full_name: 'asd/vim')
|
||||
end
|
||||
|
||||
it "assigns variables" do
|
||||
@project = create(:project, import_type: 'gitorious', creator_id: user.id)
|
||||
stub_client(repos: [@repo])
|
||||
|
||||
get :status
|
||||
|
||||
expect(assigns(:already_added_projects)).to eq([@project])
|
||||
expect(assigns(:repos)).to eq([@repo])
|
||||
end
|
||||
|
||||
it "does not show already added project" do
|
||||
@project = create(:project, import_type: 'gitorious', creator_id: user.id, import_source: 'asd/vim')
|
||||
stub_client(repos: [@repo])
|
||||
|
||||
get :status
|
||||
|
||||
expect(assigns(:already_added_projects)).to eq([@project])
|
||||
expect(assigns(:repos)).to eq([])
|
||||
end
|
||||
end
|
||||
|
||||
describe "POST create" do
|
||||
before do
|
||||
@repo = Gitlab::GitoriousImport::Repository.new('asd/vim')
|
||||
end
|
||||
|
||||
it "takes already existing namespace" do
|
||||
namespace = create(:namespace, name: "asd", owner: user)
|
||||
expect(Gitlab::GitoriousImport::ProjectCreator).
|
||||
to receive(:new).with(@repo, namespace, user).
|
||||
and_return(double(execute: true))
|
||||
stub_client(repo: @repo)
|
||||
|
||||
post :create, format: :js
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,26 +0,0 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Gitlab::GitoriousImport::ProjectCreator, lib: true do
|
||||
let(:user) { create(:user) }
|
||||
let(:repo) { Gitlab::GitoriousImport::Repository.new('foo/bar-baz-qux') }
|
||||
let(:namespace){ create(:group, owner: user) }
|
||||
|
||||
before do
|
||||
namespace.add_owner(user)
|
||||
end
|
||||
|
||||
it 'creates project' do
|
||||
allow_any_instance_of(Project).to receive(:add_import_job)
|
||||
|
||||
project_creator = Gitlab::GitoriousImport::ProjectCreator.new(repo, namespace, user)
|
||||
project = project_creator.execute
|
||||
|
||||
expect(project.name).to eq("Bar Baz Qux")
|
||||
expect(project.path).to eq("bar-baz-qux")
|
||||
expect(project.namespace).to eq(namespace)
|
||||
expect(project.visibility_level).to eq(Gitlab::VisibilityLevel::PUBLIC)
|
||||
expect(project.import_type).to eq("gitorious")
|
||||
expect(project.import_source).to eq("foo/bar-baz-qux")
|
||||
expect(project.import_url).to eq("https://gitorious.org/foo/bar-baz-qux.git")
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue