From 43f06c0826895df06c7f90bb8b1f1735801a845d Mon Sep 17 00:00:00 2001 From: huang Date: Wed, 11 May 2016 13:44:15 +0800 Subject: [PATCH] =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=BA=93ZIP=E4=B8=8B?= =?UTF-8?q?=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/repositories_controller.rb | 11 +++++++++-- config/routes.rb | 1 + lib/gitlab-cli/lib/gitlab/client/repositories.rb | 13 +++++++++++-- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index b73ecf9b9..4a148bb8b 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -32,9 +32,9 @@ class RepositoriesController < ApplicationController before_filter :find_project_by_project_id, :only => [:new, :create, :newrepo, :stats] before_filter :find_repository, :only => [:edit, :update, :destroy, :committers] - before_filter :find_project_repository, :except => [:new, :create, :newcreate, :edit, :update, :destroy, :committers, :newrepo, :to_gitlab, :forked] + before_filter :find_project_repository, :except => [:new, :create, :newcreate, :edit, :update, :destroy, :committers, :newrepo, :to_gitlab, :forked, :project_archive] before_filter :find_changeset, :only => [:revision, :add_related_issue, :remove_related_issue] - before_filter :authorize , :except => [:newrepo,:newcreate,:fork, :to_gitlab, :forked, :commit_diff] + before_filter :authorize , :except => [:newrepo,:newcreate,:fork, :to_gitlab, :forked, :commit_diff, :project_archive] accept_rss_auth :revisions # hidden repositories filter // 隐藏代码过滤器 before_filter :check_hidden_repo, :only => [:show, :stats, :revisions, :revision, :diff ] @@ -95,6 +95,13 @@ class RepositoriesController < ApplicationController end + # 一键ZIP下载 + def project_archive + g = Gitlab.client + g.get() + # g.project_archive(params[:gpid].to_i, params[:rev]) + end + # 判断用户是否已经fork过该项目 def has_forked?(project, user) projects = Project.where("user_id =?", user) diff --git a/config/routes.rb b/config/routes.rb index 989875495..ffda033a6 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -908,6 +908,7 @@ RedmineApp::Application.routes.draw do get 'projects/:id/repository/changes(/*path(.:ext))', :to => 'repositories#changes' get 'projects/:id/repository/forked', :to => 'repositories#forked' + get 'projects/:id/repository/project_archive', :to => 'repositories#project_archive', :as => 'project_archive' get 'projects/:id/repository/revisions', :to => 'repositories#revisions' get 'projects/:id/repository/revisions/:rev', :to => 'repositories#revision' get 'projects/:id/repository/revision', :to => 'repositories#revision' diff --git a/lib/gitlab-cli/lib/gitlab/client/repositories.rb b/lib/gitlab-cli/lib/gitlab/client/repositories.rb index 990300b31..34915967c 100644 --- a/lib/gitlab-cli/lib/gitlab/client/repositories.rb +++ b/lib/gitlab-cli/lib/gitlab/client/repositories.rb @@ -137,11 +137,20 @@ class Gitlab::Client end alias_method :repo_commit_diff, :commit_diff - #Get the commits count of each contributor in a project - #@param [Integer] project the ID fo a project. + # Get the commits count of each contributor in a project + # @param [Integer] project the ID fo a project. # @return [Gitlab::ObjectifiedHash] def contributors(project) get("/projects/#{project}/repository/contributors") end + + # Get an archive of the repository + # @param [Integer] project the ID fo a project. + # sha (optional) - The commit SHA to download defaults to the tip of the default branch + # @return [Gitlab::ObjectifiedHash] + def project_archive(project, sha) + get("/projects/#{project}/repository/archive?sha=#{sha}") + end + alias_method :repo_project_archive, :project_archive end end