summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorValery Sizov <vsv2711@gmail.com>2015-04-30 18:14:00 +0300
committerValery Sizov <vsv2711@gmail.com>2015-04-30 18:14:00 +0300
commitd25381b10976380ac06a94d3b0fcc174ef7481df (patch)
tree6244399d9a891de01d39a63ca9c0826a522e8ab5
parent4886b2d58436026fba7499a04ec7b6419c321c76 (diff)
downloadgitlab-ci-d25381b10976380ac06a94d3b0fcc174ef7481df.tar.gz
forking projectsci_forking
-rw-r--r--app/models/fork.rb12
-rw-r--r--app/services/create_project_service.rb2
-rw-r--r--app/views/builds/show.html.haml2
-rw-r--r--app/views/projects/_gitlab.html.haml5
-rw-r--r--app/views/projects/_project.html.haml10
-rw-r--r--db/migrate/20150429000160_add_parent_id_to_project.rb1
-rw-r--r--db/schema.rb1
7 files changed, 25 insertions, 8 deletions
diff --git a/app/models/fork.rb b/app/models/fork.rb
new file mode 100644
index 0000000..55e8ac2
--- /dev/null
+++ b/app/models/fork.rb
@@ -0,0 +1,12 @@
+class Fork < Project
+ has_many :jobs, primary_key: :parent_id, foreign_key: :project_id, dependent: nil
+
+ # Fork has no own jobs
+ def build_default_job
+ nil
+ end
+
+ def self.model_name
+ Project.model_name
+ end
+end \ No newline at end of file
diff --git a/app/services/create_project_service.rb b/app/services/create_project_service.rb
index 5cca00f..2b6dc91 100644
--- a/app/services/create_project_service.rb
+++ b/app/services/create_project_service.rb
@@ -2,7 +2,7 @@ class CreateProjectService
include Rails.application.routes.url_helpers
def execute(current_user, params, project_route, forked_project = nil)
- @project = Project.parse(params)
+ @project = forked_project? ? Fork.parse(params) : Project.parse(params)
Project.transaction do
@project.build_default_job
diff --git a/app/views/builds/show.html.haml b/app/views/builds/show.html.haml
index d26bee0..9be3a58 100644
--- a/app/views/builds/show.html.haml
+++ b/app/views/builds/show.html.haml
@@ -2,7 +2,7 @@
= link_to @project.name, @project
@
= @commit.short_sha
- - if current_user.can_manage_project?(@project.gitlab_id)
+ - if current_user.can_manage_project?(@project.gitlab_id) && !@project.fork?
.pull-right
= link_to project_jobs_path(@project), class: "btn btn-default btn-small" do
%i.icon-edit.icon-white
diff --git a/app/views/projects/_gitlab.html.haml b/app/views/projects/_gitlab.html.haml
index 9847842..55a959d 100644
--- a/app/views/projects/_gitlab.html.haml
+++ b/app/views/projects/_gitlab.html.haml
@@ -16,19 +16,16 @@
%table.table.projects-table
%thead
%tr
- %th ID
%th Project Name
%th Last commit
%th Access
%th Commits
- = render @projects
+ = render partial: "project", collection: @projects
- @gl_projects.sort_by(&:name_with_namespace).each do |project|
%tr.light
%td
- \-
- %td
= project.name_with_namespace
%td
%small Not added to CI
diff --git a/app/views/projects/_project.html.haml b/app/views/projects/_project.html.haml
index af2e123..ce25f51 100644
--- a/app/views/projects/_project.html.haml
+++ b/app/views/projects/_project.html.haml
@@ -1,10 +1,16 @@
- last_commit = project.last_commit
%tr.alert{class: commit_status_alert_class(last_commit) }
- %td
- = project.id
+
%td
= link_to project do
%strong= project.name
+
+ &nbsp;
+ - if project.fork?
+ %i.icon-code-fork
+ - else
+ %i.icon-code
+
%td
- if last_commit
#{last_commit.status} (#{commit_link(last_commit)})
diff --git a/db/migrate/20150429000160_add_parent_id_to_project.rb b/db/migrate/20150429000160_add_parent_id_to_project.rb
index 9c728b4..d55be41 100644
--- a/db/migrate/20150429000160_add_parent_id_to_project.rb
+++ b/db/migrate/20150429000160_add_parent_id_to_project.rb
@@ -1,5 +1,6 @@
class AddParentIdToProject < ActiveRecord::Migration
def change
add_column :projects, :parent_id, :integer
+ add_column :projects, :type, :string
end
end
diff --git a/db/schema.rb b/db/schema.rb
index 77cceaa..5f86d22 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -101,6 +101,7 @@ ActiveRecord::Schema.define(version: 20150429000160) do
t.string "coverage_regex"
t.boolean "shared_runners_enabled", default: false
t.integer "parent_id"
+ t.string "type"
end
create_table "runner_projects", force: true do |t|