summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/assets/stylesheets/projects.css.scss1
-rw-r--r--app/controllers/repositories_controller.rb22
-rw-r--r--app/helpers/projects_helper.rb6
-rw-r--r--app/views/layouts/project.html.haml1
-rw-r--r--app/views/repositories/_head.html.haml19
-rw-r--r--app/views/repositories/branches.html.haml10
-rw-r--r--app/views/repositories/show.html.haml7
-rw-r--r--app/views/repositories/tags.html.haml10
-rw-r--r--config/routes.rb7
-rw-r--r--db/schema.rb12
-rw-r--r--spec/requests/repositories_spec.rb58
11 files changed, 153 insertions, 0 deletions
diff --git a/app/assets/stylesheets/projects.css.scss b/app/assets/stylesheets/projects.css.scss
index 6916d65cfa5..316ef033e28 100644
--- a/app/assets/stylesheets/projects.css.scss
+++ b/app/assets/stylesheets/projects.css.scss
@@ -598,6 +598,7 @@ h4.middle-panel {
}
}
}
+.merge-tabs.repository .tab span{ background: url("images.png") no-repeat -38px -77px; }
.activities-tab span { background: url("images.png") no-repeat -161px -1px; }
.stat-tab span,
.team-tab span,
diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb
new file mode 100644
index 00000000000..9a112f4674f
--- /dev/null
+++ b/app/controllers/repositories_controller.rb
@@ -0,0 +1,22 @@
+class RepositoriesController < ApplicationController
+ before_filter :project
+
+ # Authorize
+ before_filter :add_project_abilities
+ before_filter :authorize_read_project!
+ before_filter :require_non_empty_project
+
+ layout "project"
+
+ def show
+ @activities = @project.fresh_commits(20)
+ end
+
+ def branches
+ @branches = @project.repo.heads.sort_by(&:name)
+ end
+
+ def tags
+ @tags = @project.repo.tags.sort_by(&:name).reverse
+ end
+end
diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb
index cc1d69d46c5..902d278019c 100644
--- a/app/helpers/projects_helper.rb
+++ b/app/helpers/projects_helper.rb
@@ -33,4 +33,10 @@ module ProjectsHelper
:project_id => @project,
:id => @ref || @project.root_ref ) ? "current" : nil
end
+
+ def repository_tab_class
+ if controller.controller_name == "repositories"
+ "current"
+ end
+ end
end
diff --git a/app/views/layouts/project.html.haml b/app/views/layouts/project.html.haml
index 1c9b588476a..5545cc2f269 100644
--- a/app/views/layouts/project.html.haml
+++ b/app/views/layouts/project.html.haml
@@ -24,6 +24,7 @@
.fixed
%aside
= link_to "Project", project_path(@project), :class => project_tab_class
+ = link_to "Repository", project_repository_path(@project), :class => repository_tab_class
= link_to "Tree", tree_project_ref_path(@project, @project.root_ref), :class => tree_tab_class
= link_to "Commits", project_commits_path(@project), :class => current_page?(:controller => "commits", :action => "index", :project_id => @project) ? "current" : nil
= link_to "Network graph", graph_project_path(@project), :class => current_page?(:controller => "projects", :action => "graph", :id => @project) ? "current" : nil
diff --git a/app/views/repositories/_head.html.haml b/app/views/repositories/_head.html.haml
new file mode 100644
index 00000000000..c22286ec094
--- /dev/null
+++ b/app/views/repositories/_head.html.haml
@@ -0,0 +1,19 @@
+.merge-tabs.repository
+ = link_to project_repository_path(@project), :class => "activities-tab tab #{'active' if current_page?(project_repository_path(@project)) }" do
+ %span
+ Activities
+ = link_to branches_project_repository_path(@project), :class => "tab #{'active' if current_page?(branches_project_repository_path(@project)) }" do
+ %span
+ Branches
+ = link_to tags_project_repository_path(@project), :class => "tab #{'active' if current_page?(tags_project_repository_path(@project)) }" do
+ %span
+ Tags
+ -#= link_to "#", :class => "tab" do
+ %span
+ Hooks
+ -#= link_to "#", :class => "tab" do
+ %span
+ Deploy Keys
+
+
+
diff --git a/app/views/repositories/branches.html.haml b/app/views/repositories/branches.html.haml
new file mode 100644
index 00000000000..3a63e761a46
--- /dev/null
+++ b/app/views/repositories/branches.html.haml
@@ -0,0 +1,10 @@
+= render "head"
+- unless @branches.empty?
+ %div.update-data.ui-box.ui-box-small
+ .data
+ - @branches.each do |branch|
+ %a.update-item{:href => project_commits_path(@project, :ref => branch.name)}
+ %span.update-title{:style => "margin-bottom:0px;"}
+ = branch.name
+- else
+ %h3 No brances
diff --git a/app/views/repositories/show.html.haml b/app/views/repositories/show.html.haml
new file mode 100644
index 00000000000..494f82b9433
--- /dev/null
+++ b/app/views/repositories/show.html.haml
@@ -0,0 +1,7 @@
+- content_for(:body_class, "project-page dashboard")
+= render "head"
+
+#news-feed.news-feed
+ .project-box.project-updates.ui-box.ui-box-small.ui-box-big
+ - @activities.each do |update|
+ = render "projects/feed", :update => update, :project => @project
diff --git a/app/views/repositories/tags.html.haml b/app/views/repositories/tags.html.haml
new file mode 100644
index 00000000000..6c8e377a72a
--- /dev/null
+++ b/app/views/repositories/tags.html.haml
@@ -0,0 +1,10 @@
+= render "head"
+- unless @tags.empty?
+ %div.update-data.ui-box.ui-box-small
+ .data
+ - @tags.each do |tag|
+ %a.update-item{:href => project_commits_path(@project, :ref => tag.name)}
+ %span.update-title{:style => "margin-bottom:0px;"}
+ = tag.name
+- else
+ %h3 No tags
diff --git a/config/routes.rb b/config/routes.rb
index 5888096653a..90b391cd5a2 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -46,6 +46,13 @@ Gitlab::Application.routes.draw do
get "files"
end
+ resource :repository do
+ member do
+ get "branches"
+ get "tags"
+ end
+ end
+
resources :refs, :only => [], :path => "/" do
collection do
get "switch"
diff --git a/db/schema.rb b/db/schema.rb
index 3014579c16f..7f3264cc173 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -13,6 +13,18 @@
ActiveRecord::Schema.define(:version => 20111220190817) do
+ create_table "features", :force => true do |t|
+ t.string "name"
+ t.string "branch_name"
+ t.integer "assignee_id"
+ t.integer "author_id"
+ t.integer "project_id"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.string "version"
+ t.integer "status", :default => 0, :null => false
+ end
+
create_table "issues", :force => true do |t|
t.string "title"
t.integer "assignee_id"
diff --git a/spec/requests/repositories_spec.rb b/spec/requests/repositories_spec.rb
new file mode 100644
index 00000000000..8c3ebf1847e
--- /dev/null
+++ b/spec/requests/repositories_spec.rb
@@ -0,0 +1,58 @@
+require 'spec_helper'
+
+describe "Repository" do
+
+ before do
+ @user = Factory :user
+ @project = Factory :project
+ @project.add_access(@user, :read, :write)
+ login_with @user
+ end
+
+ describe "GET /:project_name/repository" do
+ before do
+ visit project_repository_path(@project)
+ end
+
+ it "should be on projects page" do
+ current_path.should == project_repository_path(@project)
+ end
+
+ it "should have link to repo activities" do
+ page.should have_content("Activities")
+ end
+
+ it "should have link to last commit for activities tab" do
+ page.should have_content(@project.commit.safe_message[0..20])
+ page.should have_content(@project.commit.author_name)
+ end
+
+ it "should show commits list" do
+ page.all(:css, ".project-update").size.should == 20
+ end
+ end
+
+ describe "GET /:project_name/repository/branches" do
+ before do
+ visit branches_project_repository_path(@project)
+ end
+
+ it "should have link to repo activities" do
+ page.should have_content("Branches")
+ page.should have_content("master")
+ end
+ end
+
+ # TODO: Add new repo to seeds with tags list
+ describe "GET /:project_name/repository/tags" do
+ before do
+ visit tags_project_repository_path(@project)
+ end
+
+ it "should have link to repo activities" do
+ page.should have_content("Tags")
+ page.should have_content("No tags")
+ end
+ end
+end
+