Merge master into 396-rss_atom_feed
This commit is contained in:
commit
3d1cb4bfee
Binary file not shown.
After Width: | Height: | Size: 1.5 KiB |
|
@ -818,14 +818,19 @@ div#git_help_data p {
|
||||||
.zip {
|
.zip {
|
||||||
float: left;
|
float: left;
|
||||||
padding-left: 5px;
|
padding-left: 5px;
|
||||||
|
margin-top: 6px;
|
||||||
list-style: none;
|
list-style: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav > li > a:hover {
|
.nav > li > a:hover {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
background-color: #D6E4E1;
|
background-color: #DCECFA;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dropdown-menu {
|
.dropdown-menu {
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.dropdown.open .dropdown-toggle {
|
||||||
|
background: none repeat scroll 0 0;
|
||||||
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
# -*- encoding : utf-8 -*-
|
# -*- encoding : utf-8 -*-
|
||||||
class Git::BaseController < ApplicationController
|
class Git::BaseController < ApplicationController
|
||||||
before_filter :authenticate_user!
|
before_filter :authenticate_user!
|
||||||
skip_before_filter :authenticate_user!, :only => [:show, :index, :blame, :raw] if APP_CONFIG['anonymous_access']
|
skip_before_filter :authenticate_user!, :only => [:show, :index, :blame, :raw, :archive] if APP_CONFIG['anonymous_access']
|
||||||
load_and_authorize_resource :project
|
load_and_authorize_resource :project
|
||||||
|
|
||||||
before_filter :find_git_repository
|
before_filter :find_git_repository
|
||||||
|
|
|
@ -15,4 +15,18 @@ class Git::TreesController < Git::BaseController
|
||||||
@tree = @tree / @path if @path
|
@tree = @tree / @path if @path
|
||||||
render :template => "git/trees/show"
|
render :template => "git/trees/show"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def archive
|
||||||
|
treeish = params[:treeish].presence || @project.default_branch
|
||||||
|
format = params[:format] || 'tar'
|
||||||
|
commit = @project.git_repository.log(treeish, nil, :max_count => 1).first
|
||||||
|
name = "#{@project.owner.uname}-#{@project.name}#{@project.tags.include?(treeish) ? "-#{treeish}" : ''}-#{commit.id[0..19]}"
|
||||||
|
fullname = "#{name}.#{format == 'tar' ? 'tar.gz' : 'zip'}"
|
||||||
|
file = Tempfile.new fullname, 'tmp'
|
||||||
|
system("cd #{@project.path}; git archive --format=#{format} --prefix=#{name}/ #{treeish} #{format == 'tar' ? ' | gzip -9' : ''} > #{file.path}")
|
||||||
|
file.close
|
||||||
|
send_file file.path, :disposition => 'attachment', :type => "application/#{format == 'tar' ? 'x-tar-gz' : 'zip'}",
|
||||||
|
:filename => fullname
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -86,19 +86,6 @@ class ProjectsController < ApplicationController
|
||||||
redirect_to projects_path
|
redirect_to projects_path
|
||||||
end
|
end
|
||||||
|
|
||||||
def archive
|
|
||||||
treeish = params[:treeish].presence || @project.default_branch
|
|
||||||
format = params[:format] || 'tar'
|
|
||||||
commit = @project.git_repository.log(treeish, nil, :max_count => 1).first
|
|
||||||
name = "#{@project.owner.uname}-#{@project.name}#{@project.tags.include?(treeish) ? "-#{treeish}" : ''}-#{commit.id[0..19]}"
|
|
||||||
fullname = "#{name}.#{format == 'tar' ? 'tar.gz' : 'zip'}"
|
|
||||||
file = Tempfile.new fullname, 'tmp'
|
|
||||||
system("cd #{@project.path}; git archive --format=#{format} --prefix=#{name}/ #{treeish} #{format == 'tar' ? ' | gzip -9' : ''} > #{file.path}")
|
|
||||||
file.close
|
|
||||||
send_file file.path, :disposition => 'attachment', :type => "application/#{format == 'tar' ? 'x-tar-gz' : 'zip'}",
|
|
||||||
:filename => fullname
|
|
||||||
end
|
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
|
||||||
def prepare_list(projects)
|
def prepare_list(projects)
|
||||||
|
|
|
@ -14,6 +14,7 @@ class Ability
|
||||||
|
|
||||||
# Shared rights between guests and registered users
|
# Shared rights between guests and registered users
|
||||||
can :show, Project, :visibility => 'open'
|
can :show, Project, :visibility => 'open'
|
||||||
|
can :archive, Project, :visibility => 'open'
|
||||||
can :read, Issue, :project => {:visibility => 'open'}
|
can :read, Issue, :project => {:visibility => 'open'}
|
||||||
can :search, BuildList
|
can :search, BuildList
|
||||||
can :read, BuildList, :project => {:visibility => 'open'}
|
can :read, BuildList, :project => {:visibility => 'open'}
|
||||||
|
@ -51,8 +52,8 @@ class Ability
|
||||||
|
|
||||||
can :create, Project
|
can :create, Project
|
||||||
can :read, Project, :visibility => 'open'
|
can :read, Project, :visibility => 'open'
|
||||||
can :read, Project, :owner_type => 'User', :owner_id => user.id
|
can [:read, :archive], Project, :owner_type => 'User', :owner_id => user.id
|
||||||
can :read, Project, :owner_type => 'Group', :owner_id => user.group_ids
|
can [:read, :archive], Project, :owner_type => 'Group', :owner_id => user.group_ids
|
||||||
can([:read, :membered], Project, read_relations_for('projects')) {|project| local_reader? project}
|
can([:read, :membered], Project, read_relations_for('projects')) {|project| local_reader? project}
|
||||||
can(:write, Project) {|project| local_writer? project} # for grack
|
can(:write, Project) {|project| local_writer? project} # for grack
|
||||||
can([:update, :sections, :manage_collaborators], Project) {|project| local_admin? project}
|
can([:update, :sections, :manage_collaborators], Project) {|project| local_admin? project}
|
||||||
|
@ -61,7 +62,6 @@ class Ability
|
||||||
can(:destroy, Project) {|project| owner? project}
|
can(:destroy, Project) {|project| owner? project}
|
||||||
can(:destroy, Project) {|project| project.owner_type == 'Group' and project.owner.objects.exists?(:object_type => 'User', :object_id => user.id, :role => 'admin')}
|
can(:destroy, Project) {|project| project.owner_type == 'Group' and project.owner.objects.exists?(:object_type => 'User', :object_id => user.id, :role => 'admin')}
|
||||||
can :remove_user, Project
|
can :remove_user, Project
|
||||||
can :archive, Project
|
|
||||||
|
|
||||||
can [:read, :owned], BuildList, :user_id => user.id
|
can [:read, :owned], BuildList, :user_id => user.id
|
||||||
can [:read, :related], BuildList, :project => {:owner_type => 'User', :owner_id => user.id}
|
can [:read, :related], BuildList, :project => {:owner_type => 'User', :owner_id => user.id}
|
||||||
|
|
|
@ -1,11 +1,6 @@
|
||||||
-set_meta_tags :title => [title_object(@project), t('layout.build_lists.new_header')]
|
-set_meta_tags :title => [title_object(@project), t('layout.build_lists.new_header')]
|
||||||
= form_for [@project, @build_list], :html => { :class => :form, :method => :post } do |f|
|
= form_for [@project, @build_list], :html => { :class => :form, :method => :post } do |f|
|
||||||
%section.left
|
%section.left
|
||||||
%h3= t("activerecord.attributes.build_list.project_version")
|
|
||||||
- if controller.action_name == 'new'
|
|
||||||
.lineForm= f.select :project_version, @project.versions_for_group_select, :selected => "latest_" + @project.default_branch
|
|
||||||
- else
|
|
||||||
.lineForm= f.select :project_version, @project.versions_for_group_select
|
|
||||||
%h3= t("activerecord.attributes.build_list.bpl")
|
%h3= t("activerecord.attributes.build_list.bpl")
|
||||||
.all_platforms
|
.all_platforms
|
||||||
- Platform.main.each do |pl|
|
- Platform.main.each do |pl|
|
||||||
|
@ -16,6 +11,13 @@
|
||||||
.offset25{:style => 'padding-left: 25px'}
|
.offset25{:style => 'padding-left: 25px'}
|
||||||
= render 'include_repos', :platform => pl
|
= render 'include_repos', :platform => pl
|
||||||
%section.right
|
%section.right
|
||||||
|
%h3= t("activerecord.attributes.build_list.pl")
|
||||||
|
.lineForm= f.select :pl_id, @project.repositories.collect{|r| ["#{r.platform.name}/#{r.name}", r.platform.id]}
|
||||||
|
%h3= t("activerecord.attributes.build_list.project_version")
|
||||||
|
- if controller.action_name == 'new'
|
||||||
|
.lineForm= f.select :project_version, @project.versions_for_group_select, :selected => "latest_" + @project.default_branch
|
||||||
|
- else
|
||||||
|
.lineForm= f.select :project_version, @project.versions_for_group_select
|
||||||
%h3= t("activerecord.attributes.build_list.arch")
|
%h3= t("activerecord.attributes.build_list.arch")
|
||||||
- Arch.recent.each do |arch|
|
- Arch.recent.each do |arch|
|
||||||
.both
|
.both
|
||||||
|
@ -24,8 +26,6 @@
|
||||||
- else
|
- else
|
||||||
= check_box_tag "arches[]", arch.id, (params[:arches]||[]).include?(arch.id.to_s), :id => "arches_#{arch.id}"
|
= check_box_tag "arches[]", arch.id, (params[:arches]||[]).include?(arch.id.to_s), :id => "arches_#{arch.id}"
|
||||||
= label_tag "arches_#{arch.id}", arch.name
|
= label_tag "arches_#{arch.id}", arch.name
|
||||||
%h3= t("activerecord.attributes.build_list.pl")
|
|
||||||
.lineForm= f.select :pl_id, @project.repositories.collect{|r| ["#{r.platform.name}/#{r.name}", r.platform.id]}
|
|
||||||
%h3= t("activerecord.attributes.build_list.update_type")
|
%h3= t("activerecord.attributes.build_list.update_type")
|
||||||
.lineForm= f.select :update_type, BuildList::UPDATE_TYPES
|
.lineForm= f.select :update_type, BuildList::UPDATE_TYPES
|
||||||
%h3= t("activerecord.attributes.build_list.preferences")
|
%h3= t("activerecord.attributes.build_list.preferences")
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
%ul.nav.zip
|
%ul.nav.zip
|
||||||
%li#menu-archive.dropdown
|
%li#menu-archive.dropdown
|
||||||
%a.dropdown-toggle{"data-toggle" => "dropdown", :href => "#menu-archive"}
|
%a.dropdown-toggle{"data-toggle" => "dropdown", :href => "#menu-archive"}
|
||||||
ZIP
|
=image_tag 'zip.png', :alt => 'ZIP'
|
||||||
%b.caret
|
%b.caret
|
||||||
%ul.dropdown-menu
|
%ul.dropdown-menu
|
||||||
%li=link_to "tar.gz", archive_path(project.id, 'tar', @treeish)
|
%li=link_to "tar.gz", archive_path(project.id, 'tar', @treeish)
|
||||||
|
|
|
@ -154,7 +154,7 @@ Rosa::Application.routes.draw do
|
||||||
# Raw
|
# Raw
|
||||||
get '/projects/:project_id/raw/:treeish/*path' => "git/blobs#raw", :defaults => {:treeish => :master}, :as => :raw, :format => false
|
get '/projects/:project_id/raw/:treeish/*path' => "git/blobs#raw", :defaults => {:treeish => :master}, :as => :raw, :format => false
|
||||||
|
|
||||||
get '/projects/:id/archive/:format/tree/:treeish' => "projects#archive", :defaults => {:treeish => :master}, :as => :archive, :format => /zip|tar/
|
get '/projects/:project_id/archive/:format/tree/:treeish' => "git/trees#archive", :defaults => {:treeish => :master}, :as => :archive, :format => /zip|tar/
|
||||||
|
|
||||||
# Core callbacks
|
# Core callbacks
|
||||||
match 'build_lists/publish_build', :to => "build_lists#publish_build"
|
match 'build_lists/publish_build', :to => "build_lists#publish_build"
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
class RemoveDownloads < ActiveRecord::Migration
|
||||||
|
def up
|
||||||
|
drop_table :downloads
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
create_table "downloads", :force => true do |t|
|
||||||
|
t.string "name", :null => false
|
||||||
|
t.string "version"
|
||||||
|
t.string "distro"
|
||||||
|
t.string "platform"
|
||||||
|
t.integer "counter", :default => 0
|
||||||
|
t.datetime "created_at"
|
||||||
|
t.datetime "updated_at"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
db/schema.rb
10
db/schema.rb
|
@ -109,16 +109,6 @@ ActiveRecord::Schema.define(:version => 20120418100619) do
|
||||||
|
|
||||||
add_index "delayed_jobs", ["priority", "run_at"], :name => "delayed_jobs_priority"
|
add_index "delayed_jobs", ["priority", "run_at"], :name => "delayed_jobs_priority"
|
||||||
|
|
||||||
create_table "downloads", :force => true do |t|
|
|
||||||
t.string "name", :null => false
|
|
||||||
t.string "version"
|
|
||||||
t.string "distro"
|
|
||||||
t.string "platform"
|
|
||||||
t.integer "counter", :default => 0
|
|
||||||
t.datetime "created_at"
|
|
||||||
t.datetime "updated_at"
|
|
||||||
end
|
|
||||||
|
|
||||||
create_table "event_logs", :force => true do |t|
|
create_table "event_logs", :force => true do |t|
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
t.string "user_name"
|
t.string "user_name"
|
||||||
|
|
|
@ -1,6 +0,0 @@
|
||||||
# -*- encoding : utf-8 -*-
|
|
||||||
require 'spec_helper'
|
|
||||||
|
|
||||||
describe DownloadsController do
|
|
||||||
|
|
||||||
end
|
|
|
@ -1,6 +0,0 @@
|
||||||
# -*- encoding : utf-8 -*-
|
|
||||||
require 'spec_helper'
|
|
||||||
|
|
||||||
describe Download do
|
|
||||||
pending "add some examples to (or delete) #{__FILE__}"
|
|
||||||
end
|
|
Loading…
Reference in New Issue