From 6e40112138fb352329321686d40b6d263d10823b Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 7 Nov 2024 16:44:40 +0800 Subject: [PATCH 01/13] =?UTF-8?q?=E6=9B=B4=E6=94=B9:=20=E6=9B=B4=E6=96=B0g?= =?UTF-8?q?itea-client=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index a60a04811..648dc2e92 100644 --- a/Gemfile +++ b/Gemfile @@ -142,6 +142,6 @@ gem 'doorkeeper' gem 'doorkeeper-jwt' -gem 'gitea-client', '~> 1.5.8' +gem 'gitea-client', '~> 1.6.1' gem 'loofah', '~> 2.20.0' \ No newline at end of file From fe971495cd5b3eb586895b553419b0f9c5bedd5c Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 7 Nov 2024 16:45:40 +0800 Subject: [PATCH 02/13] =?UTF-8?q?=E6=96=B0=E5=A2=9E:=20=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E8=AF=B7=E6=B1=82=E6=96=87=E4=BB=B6=E5=8F=98=E6=9B=B4=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=8B=86=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/v1/projects/pulls/pulls_controller.rb | 10 +++++++++- app/views/api/v1/projects/_simple_gitea_file.jbuilder | 5 +++++ .../api/v1/projects/pulls/pulls/files.json.jbuilder | 8 ++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 app/views/api/v1/projects/_simple_gitea_file.jbuilder create mode 100644 app/views/api/v1/projects/pulls/pulls/files.json.jbuilder diff --git a/app/controllers/api/v1/projects/pulls/pulls_controller.rb b/app/controllers/api/v1/projects/pulls/pulls_controller.rb index 1a7c574d9..254ad1741 100644 --- a/app/controllers/api/v1/projects/pulls/pulls_controller.rb +++ b/app/controllers/api/v1/projects/pulls/pulls_controller.rb @@ -6,13 +6,21 @@ class Api::V1::Projects::Pulls::PullsController < Api::V1::BaseController @pulls = kaminari_paginate(@pulls) end - before_action :load_pull_request, only: [:show] + before_action :load_pull_request, only: [:show, :files] def show @result_object = Api::V1::Projects::Pulls::GetService.call(@project, @pull_request, current_user&.gitea_token) @last_review = @pull_request.reviews.order(created_at: :desc).take end + def files + if params[:filepath].present? + @result_object = $gitea_hat_client.get_repos_pulls_files_by_owner_repo_index_filepath(@project&.owner.login, @project&.identifier, @pull_request.gitea_number, params[:filepath], {query: {token: current_user&.gitea_token}}) + else + @result_object = $gitea_client.get_repos_pulls_files_by_owner_repo_index(@project&.owner.login, @project&.identifier, @pull_request.gitea_number, {query: {token: current_user&.gitea_token, page: page, limit: limit}}) + end + end + private def query_params params.permit(:status, :keyword, :priority_id, :issue_tag_id, :version_id, :reviewer_id, :sort_by, :sort_direction) diff --git a/app/views/api/v1/projects/_simple_gitea_file.jbuilder b/app/views/api/v1/projects/_simple_gitea_file.jbuilder new file mode 100644 index 000000000..44a9d7b2b --- /dev/null +++ b/app/views/api/v1/projects/_simple_gitea_file.jbuilder @@ -0,0 +1,5 @@ +json.filename file["filename"] +json.status file["status"] +json.additions file["additions"] +json.deletions file["deletions"] +json.changes file["changes"] diff --git a/app/views/api/v1/projects/pulls/pulls/files.json.jbuilder b/app/views/api/v1/projects/pulls/pulls/files.json.jbuilder new file mode 100644 index 000000000..2698e30f0 --- /dev/null +++ b/app/views/api/v1/projects/pulls/pulls/files.json.jbuilder @@ -0,0 +1,8 @@ +if params[:filepath].present? + json.partial! "api/v1/projects/simple_gitea_diff_detail", diff: @result_object +else + json.file_numbers @result_object[:total_data] + json.files @result_object[:data] do |file| + json.partial! "api/v1/projects/simple_gitea_file", file: file + end +end \ No newline at end of file From e57910a9a8b9893606e9be3407893e485c9b771b Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 7 Nov 2024 16:46:17 +0800 Subject: [PATCH 03/13] =?UTF-8?q?=E6=96=B0=E5=A2=9E:=20Commit=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E5=8F=98=E6=9B=B4=E5=88=97=E8=A1=A8=E6=8B=86=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/api/v1/projects/commits_controller.rb | 10 +++++++++- app/views/api/v1/projects/commits/files.json.jbuilder | 8 ++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 app/views/api/v1/projects/commits/files.json.jbuilder diff --git a/app/controllers/api/v1/projects/commits_controller.rb b/app/controllers/api/v1/projects/commits_controller.rb index 98fdc290f..a6d4511da 100644 --- a/app/controllers/api/v1/projects/commits_controller.rb +++ b/app/controllers/api/v1/projects/commits_controller.rb @@ -1,5 +1,5 @@ class Api::V1::Projects::CommitsController < Api::V1::BaseController - before_action :require_public_and_member_above, only: [:index, :diff, :recent] + before_action :require_public_and_member_above, only: [:index, :diff, :recent, :files] def index @result_object = Api::V1::Projects::Commits::ListService.call(@project, {page: page, limit: limit, sha: params[:sha]}, current_user&.gitea_token) @@ -10,6 +10,14 @@ class Api::V1::Projects::CommitsController < Api::V1::BaseController @result_object = Api::V1::Projects::Commits::DiffService.call(@project, params[:sha], current_user&.gitea_token) end + def files + if params[:filepath].present? + @result_object = $gitea_hat_client.get_repos_commits_files_by_owner_repo_sha_filepath(@project&.owner.login, @project&.identifier, params[:sha], params[:filepath], {query: {token: current_user&.gitea_token}}) + else + @result_object = $gitea_hat_client.get_repos_commits_files_by_owner_repo_sha(@project&.owner.login, @project&.identifier, params[:sha], {query: {token: current_user&.gitea_token, page: page, limit: limit}}) + end + end + def recent hash = Api::V1::Projects::Commits::RecentService.call(@project, {keyword: params[:keyword], page: page, limit: limit}, current_user&.gitea_token) @result_object = hash[:result] diff --git a/app/views/api/v1/projects/commits/files.json.jbuilder b/app/views/api/v1/projects/commits/files.json.jbuilder new file mode 100644 index 000000000..ce83579d5 --- /dev/null +++ b/app/views/api/v1/projects/commits/files.json.jbuilder @@ -0,0 +1,8 @@ +if params[:filepath].present? + json.partial! "api/v1/projects/simple_gitea_diff_detail", diff: @result_object +else + json.file_numbers @result_object[:total_data].to_i + json.files @result_object[:data] do |file| + json.partial! "api/v1/projects/simple_gitea_file", file: file + end +end \ No newline at end of file From 507d2cfeca7efd8569130c02c2cc72ddabb4bb8d Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 7 Nov 2024 16:46:40 +0800 Subject: [PATCH 04/13] =?UTF-8?q?=E6=96=B0=E5=A2=9E:=20compare=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E5=8F=98=E6=9B=B4=E5=88=97=E8=A1=A8=E6=8B=86=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/v1/projects/compare_controller.rb | 58 +++++++++++++++++++ .../_simple_gitea_commit.json.jbuilder | 12 ++++ .../v1/projects/compare/files.json.jbuilder | 21 +++++++ config/routes/api.rb | 5 ++ 4 files changed, 96 insertions(+) create mode 100644 app/controllers/api/v1/projects/compare_controller.rb create mode 100644 app/views/api/v1/projects/compare/_simple_gitea_commit.json.jbuilder create mode 100644 app/views/api/v1/projects/compare/files.json.jbuilder diff --git a/app/controllers/api/v1/projects/compare_controller.rb b/app/controllers/api/v1/projects/compare_controller.rb new file mode 100644 index 000000000..82594eb28 --- /dev/null +++ b/app/controllers/api/v1/projects/compare_controller.rb @@ -0,0 +1,58 @@ +class Api::V1::Projects::CompareController < Api::V1::BaseController + + before_action :require_public_and_member_above, only: [:files] + + def files + load_compare_params + if params[:type] == "sha" + @compare_result ||= gitea_compare_files(@base, @head) + else + @compare_result ||= @head.include?(":") ? gitea_compare_files(@base, @head) : gitea_compare_files(@head, @base) + @merge_status, @merge_message = get_merge_message + end + end + + private + def load_compare_params + @base = params[:base].include?(":") ? Addressable::URI.unescape(params[:base].split(":")[0]) + ':' + Base64.decode64(params[:base].split(":")[1]) : Base64.decode64(params[:base]) + @head = params[:head].include?(":") ? Addressable::URI.unescape(params[:head].split(":")[0]) + ':' + Base64.decode64(params[:head].split(":")[1]) : Base64.decode64(params[:head]) + end + + def gitea_compare_files(base, head) + if params[:filepath].present? + $gitea_hat_client.get_repos_compare_files_by_owner_repo_baseref_headref_filepath(@project&.owner&.login, @project.identifier, Addressable::URI.escape(base), Addressable::URI.escape(head), params[:filepath], {query: {token: current_user&.gitea_token}}) + else + $gitea_hat_client.get_repos_compare_files_by_owner_repo_baseref_headref(@project&.owner&.login, @project.identifier, Addressable::URI.escape(base), Addressable::URI.escape(head), {query: {token: current_user&.gitea_token}}) + end + end + + def get_merge_message + if @base.blank? || @head.blank? + return -2, "请选择分支" + else + return -2, "目标仓库未开启合并请求(PR)功能" unless @project.has_menu_permission("pulls") + if @head.include?(":") + fork_project = @project.forked_projects.joins(:owner).where(users: {login: @head.to_s.split("/")[0]}).take + return -2, "请选择正确的仓库" unless fork_project.present? + @exist_pullrequest = @project.pull_requests.where(is_original: true, head: @head.to_s.split(":")[1], base: @base, status: 0, fork_project_id: fork_project.id).take + else + @exist_pullrequest = @project.pull_requests.where(is_original: false, head: @base, base: @head, status: 0).take + end + if @exist_pullrequest.present? + return -2, "在这些分支之间的合并请求已存在:#{@exist_pullrequest.try(:title)}" + else + Rails.logger.info @compare_result + if params[:filepath].present? + if @compare_result["Commits"].blank? && @compare_result["Diff"].blank? + return -2, "分支内容相同,无需创建合并请求" + end + else + if @compare_result[:total_data].to_i < 1 + return -2, "分支内容相同,无需创建合并请求" + end + end + end + end + return 0, "可以合并" + end +end \ No newline at end of file diff --git a/app/views/api/v1/projects/compare/_simple_gitea_commit.json.jbuilder b/app/views/api/v1/projects/compare/_simple_gitea_commit.json.jbuilder new file mode 100644 index 000000000..400e9860c --- /dev/null +++ b/app/views/api/v1/projects/compare/_simple_gitea_commit.json.jbuilder @@ -0,0 +1,12 @@ +json.author do + json.partial! 'repositories/commit_author', locals: { user: render_cache_commit_author(commit['Committer']), name: commit['Committer']['Name'] } +end + +json.committer do + json.partial! 'repositories/commit_author', locals: { user: render_cache_commit_author(commit['Committer']), name: commit['Committer']['Name'] } +end +json.timestamp render_unix_time(commit['Committer']['When']) +json.time_from_now time_from_now(commit['Committer']['When']) +json.created_at render_format_time_with_date(commit['Committer']['When']) +json.message commit['CommitMessage'] +json.sha commit['Sha'] \ No newline at end of file diff --git a/app/views/api/v1/projects/compare/files.json.jbuilder b/app/views/api/v1/projects/compare/files.json.jbuilder new file mode 100644 index 000000000..54fc61218 --- /dev/null +++ b/app/views/api/v1/projects/compare/files.json.jbuilder @@ -0,0 +1,21 @@ +if params[:filepath].present? + json.commits_count @compare_result['CommitsCount'] + json.last_commit_sha @compare_result['LatestSha'] + json.commits @compare_result['Commits'] do |commit| + json.partial! 'api/v1/projects/compare/simple_gitea_commit', locals: { commit: commit} + end + json.diff do + if @compare_result['Diff'].present? + json.partial! "api/v1/projects/simple_gitea_diff_detail", diff: @compare_result['Diff'] + else + json.nil! + end + end +else + json.file_numbers @compare_result[:total_data].to_i + json.files @compare_result[:data] do |file| + json.partial! "api/v1/projects/simple_gitea_file", file: file + end +end +json.status @merge_status +json.message @merge_message \ No newline at end of file diff --git a/config/routes/api.rb b/config/routes/api.rb index 7f0a68ed6..4aaa4beab 100644 --- a/config/routes/api.rb +++ b/config/routes/api.rb @@ -167,6 +167,9 @@ defaults format: :json do post :save_yaml, on: :collection end resources :pulls, module: 'pulls' do + member do + get :files + end resources :versions, only: [:index] do member do get :diff @@ -197,6 +200,7 @@ defaults format: :json do resources :tags, param: :name, only: [:index, :show, :destroy] delete 'tags/*name', to: "tags#destroy", via: :all get 'tags/*name', to: "tags#show", via: :all + get '/compare/:base...:head/files' => 'compare#files', :constraints => { base: /.+/, head: /.+/ } resources :commits, only: [:index] do collection do @@ -210,6 +214,7 @@ defaults format: :json do end end get '/commits/:sha/diff', to: 'commits#diff' + get '/commits/:sha/files', to: 'commits#files' get '/git/blobs/:sha', to: 'git#blobs' get '/git/trees/:sha', to: 'git#trees' From 6bbb4726f2b5693b1b217a3f9ae89d0cf3cac551 Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 7 Nov 2024 16:50:35 +0800 Subject: [PATCH 05/13] =?UTF-8?q?=E6=96=B0=E5=A2=9E:=20compare=20files?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=88=86=E9=A1=B5=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/api/v1/projects/compare_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/api/v1/projects/compare_controller.rb b/app/controllers/api/v1/projects/compare_controller.rb index 82594eb28..670639e01 100644 --- a/app/controllers/api/v1/projects/compare_controller.rb +++ b/app/controllers/api/v1/projects/compare_controller.rb @@ -22,7 +22,7 @@ class Api::V1::Projects::CompareController < Api::V1::BaseController if params[:filepath].present? $gitea_hat_client.get_repos_compare_files_by_owner_repo_baseref_headref_filepath(@project&.owner&.login, @project.identifier, Addressable::URI.escape(base), Addressable::URI.escape(head), params[:filepath], {query: {token: current_user&.gitea_token}}) else - $gitea_hat_client.get_repos_compare_files_by_owner_repo_baseref_headref(@project&.owner&.login, @project.identifier, Addressable::URI.escape(base), Addressable::URI.escape(head), {query: {token: current_user&.gitea_token}}) + $gitea_hat_client.get_repos_compare_files_by_owner_repo_baseref_headref(@project&.owner&.login, @project.identifier, Addressable::URI.escape(base), Addressable::URI.escape(head), {query: {page:page,limit:limit,token: current_user&.gitea_token}}) end end From 8cd17a42f36c7ca7b209d3992b8a340c6ce9fcb4 Mon Sep 17 00:00:00 2001 From: yystopf Date: Mon, 11 Nov 2024 11:01:55 +0800 Subject: [PATCH 06/13] =?UTF-8?q?=E6=9B=B4=E6=94=B9:=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=97=A7=E7=89=88=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/v1/projects/pulls/pulls_controller.rb | 2 +- app/views/api/v1/projects/_simple_gitea_file.jbuilder | 11 ++++++++++- app/views/api/v1/projects/commits/files.json.jbuilder | 6 ++++-- app/views/api/v1/projects/compare/files.json.jbuilder | 4 +++- .../api/v1/projects/pulls/pulls/files.json.jbuilder | 4 +++- 5 files changed, 21 insertions(+), 6 deletions(-) diff --git a/app/controllers/api/v1/projects/pulls/pulls_controller.rb b/app/controllers/api/v1/projects/pulls/pulls_controller.rb index 254ad1741..b56f00777 100644 --- a/app/controllers/api/v1/projects/pulls/pulls_controller.rb +++ b/app/controllers/api/v1/projects/pulls/pulls_controller.rb @@ -17,7 +17,7 @@ class Api::V1::Projects::Pulls::PullsController < Api::V1::BaseController if params[:filepath].present? @result_object = $gitea_hat_client.get_repos_pulls_files_by_owner_repo_index_filepath(@project&.owner.login, @project&.identifier, @pull_request.gitea_number, params[:filepath], {query: {token: current_user&.gitea_token}}) else - @result_object = $gitea_client.get_repos_pulls_files_by_owner_repo_index(@project&.owner.login, @project&.identifier, @pull_request.gitea_number, {query: {token: current_user&.gitea_token, page: page, limit: limit}}) + @result_object = $gitea_hat_client.get_repos_pulls_files_by_owner_repo_index(@project&.owner.login, @project&.identifier, @pull_request.gitea_number, {query: {isNew: "true",token: current_user&.gitea_token, page: page, limit: limit}}) end end diff --git a/app/views/api/v1/projects/_simple_gitea_file.jbuilder b/app/views/api/v1/projects/_simple_gitea_file.jbuilder index 44a9d7b2b..7092a84e2 100644 --- a/app/views/api/v1/projects/_simple_gitea_file.jbuilder +++ b/app/views/api/v1/projects/_simple_gitea_file.jbuilder @@ -1,5 +1,14 @@ json.filename file["filename"] -json.status file["status"] +json.old_name file["old_name"] +json.index file["index"] +json.type file["type"] +json.is_bin file["is_bin"] +json.is_created file["is_created"] +json.is_deleted file["is_deleted"] +json.is_lfs_file file["is_lfs_file"] +json.is_renamed file["is_renamed"] +json.is_submodule file["is_submodule"] json.additions file["additions"] json.deletions file["deletions"] json.changes file["changes"] +json.sha file["sha"] \ No newline at end of file diff --git a/app/views/api/v1/projects/commits/files.json.jbuilder b/app/views/api/v1/projects/commits/files.json.jbuilder index ce83579d5..4eaa4f5aa 100644 --- a/app/views/api/v1/projects/commits/files.json.jbuilder +++ b/app/views/api/v1/projects/commits/files.json.jbuilder @@ -1,8 +1,10 @@ if params[:filepath].present? json.partial! "api/v1/projects/simple_gitea_diff_detail", diff: @result_object else - json.file_numbers @result_object[:total_data].to_i - json.files @result_object[:data] do |file| + json.file_numbers @result_object[:total_data] + json.total_addition @result_object[:data]["total_addition"] + json.total_deletion @result_object[:data]["total_deletion"] + json.files @result_object[:data]["files"] do |file| json.partial! "api/v1/projects/simple_gitea_file", file: file end end \ No newline at end of file diff --git a/app/views/api/v1/projects/compare/files.json.jbuilder b/app/views/api/v1/projects/compare/files.json.jbuilder index 54fc61218..0c05d8b8f 100644 --- a/app/views/api/v1/projects/compare/files.json.jbuilder +++ b/app/views/api/v1/projects/compare/files.json.jbuilder @@ -13,7 +13,9 @@ if params[:filepath].present? end else json.file_numbers @compare_result[:total_data].to_i - json.files @compare_result[:data] do |file| + json.total_addition @compare_result[:data]["total_addition"] + json.total_deletion @compare_result[:data]["total_deletion"] + json.files @compare_result[:data]["files"] do |file| json.partial! "api/v1/projects/simple_gitea_file", file: file end end diff --git a/app/views/api/v1/projects/pulls/pulls/files.json.jbuilder b/app/views/api/v1/projects/pulls/pulls/files.json.jbuilder index 2698e30f0..4eaa4f5aa 100644 --- a/app/views/api/v1/projects/pulls/pulls/files.json.jbuilder +++ b/app/views/api/v1/projects/pulls/pulls/files.json.jbuilder @@ -2,7 +2,9 @@ if params[:filepath].present? json.partial! "api/v1/projects/simple_gitea_diff_detail", diff: @result_object else json.file_numbers @result_object[:total_data] - json.files @result_object[:data] do |file| + json.total_addition @result_object[:data]["total_addition"] + json.total_deletion @result_object[:data]["total_deletion"] + json.files @result_object[:data]["files"] do |file| json.partial! "api/v1/projects/simple_gitea_file", file: file end end \ No newline at end of file From 42171cba21ef1519e13f3a20aa45d95f3820e151 Mon Sep 17 00:00:00 2001 From: yystopf Date: Mon, 11 Nov 2024 11:09:41 +0800 Subject: [PATCH 07/13] =?UTF-8?q?fix:=20=E4=B8=8E=E6=97=A7=E7=89=88filenum?= =?UTF-8?q?s=E4=BF=9D=E6=8C=81=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/api/v1/projects/commits/files.json.jbuilder | 2 +- app/views/api/v1/projects/compare/files.json.jbuilder | 2 +- app/views/api/v1/projects/pulls/pulls/files.json.jbuilder | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/views/api/v1/projects/commits/files.json.jbuilder b/app/views/api/v1/projects/commits/files.json.jbuilder index 4eaa4f5aa..aa4ba21bd 100644 --- a/app/views/api/v1/projects/commits/files.json.jbuilder +++ b/app/views/api/v1/projects/commits/files.json.jbuilder @@ -1,7 +1,7 @@ if params[:filepath].present? json.partial! "api/v1/projects/simple_gitea_diff_detail", diff: @result_object else - json.file_numbers @result_object[:total_data] + json.file_numbers @result_object[:total_data].to_i json.total_addition @result_object[:data]["total_addition"] json.total_deletion @result_object[:data]["total_deletion"] json.files @result_object[:data]["files"] do |file| diff --git a/app/views/api/v1/projects/compare/files.json.jbuilder b/app/views/api/v1/projects/compare/files.json.jbuilder index 0c05d8b8f..7af83f0f7 100644 --- a/app/views/api/v1/projects/compare/files.json.jbuilder +++ b/app/views/api/v1/projects/compare/files.json.jbuilder @@ -12,7 +12,7 @@ if params[:filepath].present? end end else - json.file_numbers @compare_result[:total_data].to_i + json.file_nums @compare_result[:total_data].to_i json.total_addition @compare_result[:data]["total_addition"] json.total_deletion @compare_result[:data]["total_deletion"] json.files @compare_result[:data]["files"] do |file| diff --git a/app/views/api/v1/projects/pulls/pulls/files.json.jbuilder b/app/views/api/v1/projects/pulls/pulls/files.json.jbuilder index 4eaa4f5aa..b5b3fe6a9 100644 --- a/app/views/api/v1/projects/pulls/pulls/files.json.jbuilder +++ b/app/views/api/v1/projects/pulls/pulls/files.json.jbuilder @@ -1,7 +1,7 @@ if params[:filepath].present? json.partial! "api/v1/projects/simple_gitea_diff_detail", diff: @result_object else - json.file_numbers @result_object[:total_data] + json.file_nums @result_object[:total_data].to_i json.total_addition @result_object[:data]["total_addition"] json.total_deletion @result_object[:data]["total_deletion"] json.files @result_object[:data]["files"] do |file| From 82e071ecf5d42ff3dc970765ef2b3a0b6028193f Mon Sep 17 00:00:00 2001 From: yystopf Date: Mon, 11 Nov 2024 11:14:57 +0800 Subject: [PATCH 08/13] =?UTF-8?q?fix:=20=E4=B8=8E=E6=97=A7=E7=89=88filenum?= =?UTF-8?q?s=E4=BF=9D=E6=8C=81=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/api/v1/projects/commits/files.json.jbuilder | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/api/v1/projects/commits/files.json.jbuilder b/app/views/api/v1/projects/commits/files.json.jbuilder index aa4ba21bd..b5b3fe6a9 100644 --- a/app/views/api/v1/projects/commits/files.json.jbuilder +++ b/app/views/api/v1/projects/commits/files.json.jbuilder @@ -1,7 +1,7 @@ if params[:filepath].present? json.partial! "api/v1/projects/simple_gitea_diff_detail", diff: @result_object else - json.file_numbers @result_object[:total_data].to_i + json.file_nums @result_object[:total_data].to_i json.total_addition @result_object[:data]["total_addition"] json.total_deletion @result_object[:data]["total_deletion"] json.files @result_object[:data]["files"] do |file| From c00d885e537dce0b10e3f226270ed8ad8abef950 Mon Sep 17 00:00:00 2001 From: yystopf Date: Mon, 11 Nov 2024 11:22:21 +0800 Subject: [PATCH 09/13] =?UTF-8?q?fix:=20compare=20=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=8F=98=E6=9B=B4=E8=AF=A6=E6=83=85=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/v1/projects/compare/files.json.jbuilder | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/app/views/api/v1/projects/compare/files.json.jbuilder b/app/views/api/v1/projects/compare/files.json.jbuilder index 7af83f0f7..cab1a19fc 100644 --- a/app/views/api/v1/projects/compare/files.json.jbuilder +++ b/app/views/api/v1/projects/compare/files.json.jbuilder @@ -1,16 +1,5 @@ if params[:filepath].present? - json.commits_count @compare_result['CommitsCount'] - json.last_commit_sha @compare_result['LatestSha'] - json.commits @compare_result['Commits'] do |commit| - json.partial! 'api/v1/projects/compare/simple_gitea_commit', locals: { commit: commit} - end - json.diff do - if @compare_result['Diff'].present? - json.partial! "api/v1/projects/simple_gitea_diff_detail", diff: @compare_result['Diff'] - else - json.nil! - end - end + json.partial! "api/v1/projects/simple_gitea_diff_detail", diff: @compare_result['Diff'] else json.file_nums @compare_result[:total_data].to_i json.total_addition @compare_result[:data]["total_addition"] From 96a70007fd2f93e7071ed500dad95e8a01a33fe2 Mon Sep 17 00:00:00 2001 From: yystopf Date: Tue, 12 Nov 2024 13:55:48 +0800 Subject: [PATCH 10/13] =?UTF-8?q?=E6=96=B0=E5=A2=9E:=20filepath=E7=89=B9?= =?UTF-8?q?=E6=AE=8A=E5=AD=97=E7=AC=A6=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/api/v1/projects/commits_controller.rb | 2 +- app/controllers/api/v1/projects/compare_controller.rb | 2 +- app/controllers/api/v1/projects/pulls/pulls_controller.rb | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/controllers/api/v1/projects/commits_controller.rb b/app/controllers/api/v1/projects/commits_controller.rb index a6d4511da..b80d09750 100644 --- a/app/controllers/api/v1/projects/commits_controller.rb +++ b/app/controllers/api/v1/projects/commits_controller.rb @@ -12,7 +12,7 @@ class Api::V1::Projects::CommitsController < Api::V1::BaseController def files if params[:filepath].present? - @result_object = $gitea_hat_client.get_repos_commits_files_by_owner_repo_sha_filepath(@project&.owner.login, @project&.identifier, params[:sha], params[:filepath], {query: {token: current_user&.gitea_token}}) + @result_object = $gitea_hat_client.get_repos_commits_files_by_owner_repo_sha_filepath(@project&.owner.login, @project&.identifier, params[:sha], CGI.escape(params[:filepath]), {query: {token: current_user&.gitea_token}}) else @result_object = $gitea_hat_client.get_repos_commits_files_by_owner_repo_sha(@project&.owner.login, @project&.identifier, params[:sha], {query: {token: current_user&.gitea_token, page: page, limit: limit}}) end diff --git a/app/controllers/api/v1/projects/compare_controller.rb b/app/controllers/api/v1/projects/compare_controller.rb index 670639e01..2593399d1 100644 --- a/app/controllers/api/v1/projects/compare_controller.rb +++ b/app/controllers/api/v1/projects/compare_controller.rb @@ -20,7 +20,7 @@ class Api::V1::Projects::CompareController < Api::V1::BaseController def gitea_compare_files(base, head) if params[:filepath].present? - $gitea_hat_client.get_repos_compare_files_by_owner_repo_baseref_headref_filepath(@project&.owner&.login, @project.identifier, Addressable::URI.escape(base), Addressable::URI.escape(head), params[:filepath], {query: {token: current_user&.gitea_token}}) + $gitea_hat_client.get_repos_compare_files_by_owner_repo_baseref_headref_filepath(@project&.owner&.login, @project.identifier, Addressable::URI.escape(base), Addressable::URI.escape(head), CGI.escape(params[:filepath]), {query: {token: current_user&.gitea_token}}) else $gitea_hat_client.get_repos_compare_files_by_owner_repo_baseref_headref(@project&.owner&.login, @project.identifier, Addressable::URI.escape(base), Addressable::URI.escape(head), {query: {page:page,limit:limit,token: current_user&.gitea_token}}) end diff --git a/app/controllers/api/v1/projects/pulls/pulls_controller.rb b/app/controllers/api/v1/projects/pulls/pulls_controller.rb index b56f00777..28f1cd327 100644 --- a/app/controllers/api/v1/projects/pulls/pulls_controller.rb +++ b/app/controllers/api/v1/projects/pulls/pulls_controller.rb @@ -15,7 +15,7 @@ class Api::V1::Projects::Pulls::PullsController < Api::V1::BaseController def files if params[:filepath].present? - @result_object = $gitea_hat_client.get_repos_pulls_files_by_owner_repo_index_filepath(@project&.owner.login, @project&.identifier, @pull_request.gitea_number, params[:filepath], {query: {token: current_user&.gitea_token}}) + @result_object = $gitea_hat_client.get_repos_pulls_files_by_owner_repo_index_filepath(@project&.owner.login, @project&.identifier, @pull_request.gitea_number, CGI.escape(params[:filepath]), {query: {token: current_user&.gitea_token}}) else @result_object = $gitea_hat_client.get_repos_pulls_files_by_owner_repo_index(@project&.owner.login, @project&.identifier, @pull_request.gitea_number, {query: {isNew: "true",token: current_user&.gitea_token, page: page, limit: limit}}) end From 49e2b35a1e66efefb99b4e68d8f70bb83408b911 Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 14 Nov 2024 15:40:30 +0800 Subject: [PATCH 11/13] =?UTF-8?q?=E6=9B=B4=E6=94=B9=EF=BC=9A=E4=BC=98?= =?UTF-8?q?=E5=8C=96commit=E8=AF=A6=E6=83=85=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/repositories_controller.rb | 2 +- app/services/gitea/repository/commits/list_service.rb | 2 +- app/views/repositories/commit.json.jbuilder | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index b7776bcfd..c8b8a54f8 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -151,7 +151,7 @@ class RepositoriesController < ApplicationController return render_error('暂未开放,敬请期待.') else @commit = Gitea::Repository::Commits::GetService.call(@owner.login, @repository.identifier, @sha, @owner&.gitea_token) - @commit_diff = Gitea::Repository::Commits::GetService.call(@owner.login, @repository.identifier, @sha, @owner&.gitea_token, {diff: true}) + # @commit_diff = Gitea::Repository::Commits::GetService.call(@owner.login, @repository.identifier, @sha, @owner&.gitea_token, {diff: true}) render_error(@commit[:message], @commit[:status]) if @commit.has_key?(:status) || @commit_diff.has_key?(:status) end end diff --git a/app/services/gitea/repository/commits/list_service.rb b/app/services/gitea/repository/commits/list_service.rb index 700508539..c4bd89b15 100644 --- a/app/services/gitea/repository/commits/list_service.rb +++ b/app/services/gitea/repository/commits/list_service.rb @@ -19,7 +19,7 @@ class Gitea::Repository::Commits::ListService < Gitea::ClientService private def params - { sha: args[:sha] || 'master', page: args[:page] || PAGINATE_DEFAULT_PAGE, limit: args[:limit] || PAGINATE_DEFAULT_LIMIT, token: args[:token] || "", stat: args[:page].to_i != 1 && args[:limit] !=1 } + { sha: args[:sha] || 'master', page: args[:page] || PAGINATE_DEFAULT_PAGE, limit: args[:limit] || PAGINATE_DEFAULT_LIMIT, token: args[:token] || "", stat: args[:page].to_i != 1 && args[:limit] !=1, files: false } end def url diff --git a/app/views/repositories/commit.json.jbuilder b/app/views/repositories/commit.json.jbuilder index 4c1074c8b..066bfb2d4 100644 --- a/app/views/repositories/commit.json.jbuilder +++ b/app/views/repositories/commit.json.jbuilder @@ -3,10 +3,10 @@ if @commit.blank? #如果有状态值,则表示报错了 json.total_count 0 json.commits [] else - json.files_count @commit_diff['NumFiles'] - json.total_addition @commit_diff['TotalAddition'] - json.total_deletion @commit_diff['TotalDeletion'] - json.files @commit_diff['Files'], partial: 'pull_requests/diff_file', as: :file, locals: {sha: @sha} + # json.files_count @commit_diff['NumFiles'] + # json.total_addition @commit_diff['TotalAddition'] + # json.total_deletion @commit_diff['TotalDeletion'] + # json.files @commit_diff['Files'], partial: 'pull_requests/diff_file', as: :file, locals: {sha: @sha} json.partial! 'commit', commit: @commit, project: @project json.parents @commit['parents'] do |parent| From ca3db4c7243697bae42eba033a6fd2b9a50b4002 Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 14 Nov 2024 15:42:35 +0800 Subject: [PATCH 12/13] fixed --- app/controllers/repositories_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index c8b8a54f8..c9816ef48 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -152,7 +152,7 @@ class RepositoriesController < ApplicationController else @commit = Gitea::Repository::Commits::GetService.call(@owner.login, @repository.identifier, @sha, @owner&.gitea_token) # @commit_diff = Gitea::Repository::Commits::GetService.call(@owner.login, @repository.identifier, @sha, @owner&.gitea_token, {diff: true}) - render_error(@commit[:message], @commit[:status]) if @commit.has_key?(:status) || @commit_diff.has_key?(:status) + render_error(@commit[:message], @commit[:status]) if @commit.has_key?(:status)#|| @commit_diff.has_key?(:status) end end From a4c2242a8a721b663c9ef888332024ce224cab83 Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 14 Nov 2024 16:09:36 +0800 Subject: [PATCH 13/13] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9Acompare?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=96=B0=E5=A2=9Efilescount=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/compare_controller.rb | 3 ++- app/views/compare/show.json.jbuilder | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/app/controllers/compare_controller.rb b/app/controllers/compare_controller.rb index afdceac9d..a007b1178 100644 --- a/app/controllers/compare_controller.rb +++ b/app/controllers/compare_controller.rb @@ -18,6 +18,7 @@ class CompareController < ApplicationController @page_limit = page_limit <=0 ? 15 : page_limit @page_offset = (@page_size -1) * @page_limit Rails.logger.info("+========#{@page_size}-#{@page_limit}-#{@page_offset}") + Rails.logger.info @compare_result end private @@ -36,7 +37,7 @@ class CompareController < ApplicationController if @exist_pullrequest.present? return -2, "在这些分支之间的合并请求已存在:#{@exist_pullrequest.try(:title)}" else - if @compare_result["Commits"].blank? && @compare_result["Diff"].blank? + if @compare_result["FilesCount"].to_i == 0 && @compare_result["CommitsCount"].to_i == 0 return -2, "分支内容相同,无需创建合并请求" end end diff --git a/app/views/compare/show.json.jbuilder b/app/views/compare/show.json.jbuilder index 135537cda..9ed8cd5b3 100644 --- a/app/views/compare/show.json.jbuilder +++ b/app/views/compare/show.json.jbuilder @@ -1,4 +1,5 @@ json.commits_count @compare_result['CommitsCount'] +json.files_count @compare_result['FilesCount'] # json.commits @compare_result['Commits'], partial: 'pull_requests/commit', as: :commit json.commits do if @compare_result['Commits'].present?