|
- class CompareController < ApplicationController
- # skip_before_action :require_login
- before_action :load_repository
-
- def index
- end
-
- def show
- compare
- end
-
- private
- def compare
- base, head = compare_params
-
- # TODO: 处理fork的项目向源项目发送PR的base、head参数问题
- @compare_result ||=
- head.include?(":") ? gitea_compare(base, head) : gitea_compare(head, base)
- end
-
- def compare_params
- base = Addressable::URI.unescape(params[:base])
- head = params[:head].include?('json') ? params[:head]&.split('.json')[0] : params[:head]
-
- [base, head]
- end
-
- def gitea_compare(base, head)
- Gitea::Repository::Commits::CompareService.call(@owner.login, @project.identifier, base, head)
- end
- end
|