From f3cf2c87c9b0c5b8e4917888787b58b60d4e4bd0 Mon Sep 17 00:00:00 2001 From: yystopf Date: Tue, 28 Dec 2021 18:29:58 +0800 Subject: [PATCH 1/5] fix: create pr branch name escape --- app/services/pull_requests/create_service.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/services/pull_requests/create_service.rb b/app/services/pull_requests/create_service.rb index eaf931f38..6f93a3c60 100644 --- a/app/services/pull_requests/create_service.rb +++ b/app/services/pull_requests/create_service.rb @@ -129,8 +129,10 @@ class PullRequests::CreateService < ApplicationService end def merge_original_pull_params + base_pull_params[:head] = CGI.escape(base_pull_params[:head]) + base_pull_params[:base] = CGI.escape(base_pull_params[:base]) if pull_request.is_original && @params[:merge_user_login] - base_pull_params.merge(head: "#{@params[:merge_user_login]}:#{@params[:head]}") + base_pull_params.merge(head: "#{@params[:merge_user_login]}:#{base_pull_params[:head]}") else base_pull_params end From 8c99b754fb00cb6fc75af28a1473c0d5303adad9 Mon Sep 17 00:00:00 2001 From: yystopf Date: Tue, 28 Dec 2021 18:37:44 +0800 Subject: [PATCH 2/5] fix: create pr branch name escape --- app/services/pull_requests/create_service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/pull_requests/create_service.rb b/app/services/pull_requests/create_service.rb index 6f93a3c60..4b814fd33 100644 --- a/app/services/pull_requests/create_service.rb +++ b/app/services/pull_requests/create_service.rb @@ -162,7 +162,7 @@ class PullRequests::CreateService < ApplicationService def compare_head_base! head = pull_request.is_original && @params[:merge_user_login] ? "#{@params[:merge_user_login]}/#{@project.identifier}:#{@params[:head]}" : @params[:head] - compare_result = Gitea::Repository::Commits::CompareService.call(@owner.login, @project.identifier, @params[:base], head, @current_user.gitea_token) + compare_result = Gitea::Repository::Commits::CompareService.call(@owner.login, @project.identifier, CGI.escape(@params[:base]), CGI.escape(head), @current_user.gitea_token) raise '分支内容相同,无需创建合并请求' if compare_result["Commits"].blank? && compare_result["Diff"].blank? end From fa86d3ea10c6202e4faed7d2c7728e0d95a574a0 Mon Sep 17 00:00:00 2001 From: yystopf Date: Wed, 29 Dec 2021 09:50:57 +0800 Subject: [PATCH 3/5] fix: branch delay --- app/controllers/compare_controller.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/compare_controller.rb b/app/controllers/compare_controller.rb index 869f095dc..4e6d86fc6 100644 --- a/app/controllers/compare_controller.rb +++ b/app/controllers/compare_controller.rb @@ -43,10 +43,10 @@ class CompareController < ApplicationController def load_compare_params # @base = Addressable::URI.unescape(params[:base]) - @base = Base64.decode64(params[:base]) + @base = params[:base].include?(":") ? params[:base].split(":")[0] + Base64.decode64(params[:base].split(":")[1]) : Base64.decode64(params[:base]) @head = params[:head].include?('.json') ? params[:head][0..-6] : params[:head] # @head = Addressable::URI.unescape(@head) - @head = Base64.decode64(@head) + @head = @head.include?(":") ? @head.split(":")[0] + Base64.decode64(@head.split(":")[1]) : Base64.decode64(@head) end def gitea_compare(base, head) From 0c1df3b2cba93fb47a5ded053bb7f7d8e6a2f52e Mon Sep 17 00:00:00 2001 From: yystopf Date: Wed, 29 Dec 2021 09:53:14 +0800 Subject: [PATCH 4/5] fix --- app/controllers/compare_controller.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/compare_controller.rb b/app/controllers/compare_controller.rb index 4e6d86fc6..2bbcbe59e 100644 --- a/app/controllers/compare_controller.rb +++ b/app/controllers/compare_controller.rb @@ -43,10 +43,10 @@ class CompareController < ApplicationController def load_compare_params # @base = Addressable::URI.unescape(params[:base]) - @base = params[:base].include?(":") ? params[:base].split(":")[0] + Base64.decode64(params[:base].split(":")[1]) : Base64.decode64(params[:base]) + @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?('.json') ? params[:head][0..-6] : params[:head] # @head = Addressable::URI.unescape(@head) - @head = @head.include?(":") ? @head.split(":")[0] + Base64.decode64(@head.split(":")[1]) : Base64.decode64(@head) + @head = @head.include?(":") ? Addressable::URI.unescape(@head.split(":")[0]) + Base64.decode64(@head.split(":")[1]) : Base64.decode64(@head) end def gitea_compare(base, head) From d6b66d532459f411002f4449f83b17e3ae801f39 Mon Sep 17 00:00:00 2001 From: yystopf Date: Wed, 29 Dec 2021 09:56:49 +0800 Subject: [PATCH 5/5] fix --- app/controllers/compare_controller.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/compare_controller.rb b/app/controllers/compare_controller.rb index 2bbcbe59e..07691d79f 100644 --- a/app/controllers/compare_controller.rb +++ b/app/controllers/compare_controller.rb @@ -43,10 +43,10 @@ class CompareController < ApplicationController def load_compare_params # @base = Addressable::URI.unescape(params[:base]) - @base = params[:base].include?(":") ? Addressable::URI.unescape(params[:base].split(":")[0]) + Base64.decode64(params[:base].split(":")[1]) : Base64.decode64(params[:base]) + @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?('.json') ? params[:head][0..-6] : params[:head] # @head = Addressable::URI.unescape(@head) - @head = @head.include?(":") ? Addressable::URI.unescape(@head.split(":")[0]) + Base64.decode64(@head.split(":")[1]) : Base64.decode64(@head) + @head = @head.include?(":") ? Addressable::URI.unescape(@head.split(":")[0]) + ':' + Base64.decode64(@head.split(":")[1]) : Base64.decode64(@head) end def gitea_compare(base, head)