Ensure that new pull request button works on forked forks owned by owner of the root (#14932)
Prevent 404 on new pull request button on forked fork owned by the owner of the root repository. Also ensure that the names make sense. Signed-off-by: Andrew Thornton <art27@cantab.net>
This commit is contained in:
		
							parent
							
								
									f4629fc472
								
							
						
					
					
						commit
						bf53cf0e04
					
				
					 2 changed files with 32 additions and 11 deletions
				
			
		|  | @ -12,11 +12,32 @@ | ||||||
| 				{{.i18n.Tr "action.compare_commits_general"}} | 				{{.i18n.Tr "action.compare_commits_general"}} | ||||||
| 			{{ end }} | 			{{ end }} | ||||||
| 		</h2> | 		</h2> | ||||||
|  | 		{{ $BaseCompareName := $.BaseName -}} | ||||||
|  | 		{{- $HeadCompareName := $.HeadRepo.OwnerName -}} | ||||||
|  | 		{{- if and (eq $.BaseName $.HeadRepo.OwnerName) (ne $.Repository.Name $.HeadRepo.Name) -}} | ||||||
|  | 			{{- $HeadCompareName = printf "%s/%s" $.HeadRepo.OwnerName $.HeadRepo.Name -}} | ||||||
|  | 		{{- end -}} | ||||||
|  | 		{{- $OwnForkCompareName := "" -}} | ||||||
|  | 		{{- if .OwnForkRepo -}} | ||||||
|  | 			{{- $OwnForkCompareName = .OwnForkRepo.OwnerName -}} | ||||||
|  | 		{{- end -}} | ||||||
|  | 		{{- $RootRepoCompareName := "" -}} | ||||||
|  | 		{{- if .RootRepo -}} | ||||||
|  | 			{{- $RootRepoCompareName = .RootRepo.OwnerName -}} | ||||||
|  | 			{{- if eq $.HeadRepo.OwnerName .RootRepo.OwnerName -}} | ||||||
|  | 				{{- $HeadCompareName = printf "%s/%s" $.HeadRepo.OwnerName $.HeadRepo.Name -}} | ||||||
|  | 			{{- end -}} | ||||||
|  | 			{{- if .OwnForkRepo -}} | ||||||
|  | 				{{- if eq $.OwnForkRepo.OwnerName .RootRepo.OwnerName -}} | ||||||
|  | 					{{- $OwnForkRepoCompareName = printf "%s/%s" $.OwnForkRepo.OwnerName $.OwnForkRepo.Name -}} | ||||||
|  | 				{{- end -}} | ||||||
|  | 			{{- end -}} | ||||||
|  | 		{{- end -}} | ||||||
| 		<div class="ui segment choose branch"> | 		<div class="ui segment choose branch"> | ||||||
| 			{{svg "octicon-git-compare"}} | 			{{svg "octicon-git-compare"}} | ||||||
| 			<div class="ui floating filter dropdown" data-no-results="{{.i18n.Tr "repo.pulls.no_results"}}"> | 			<div class="ui floating filter dropdown" data-no-results="{{.i18n.Tr "repo.pulls.no_results"}}"> | ||||||
| 				<div class="ui basic small button"> | 				<div class="ui basic small button"> | ||||||
| 					<span class="text">{{.i18n.Tr "repo.pulls.compare_base"}}: {{$.BaseName}}:{{$.BaseBranch}}</span> | 					<span class="text">{{.i18n.Tr "repo.pulls.compare_base"}}: {{$BaseCompareName}}:{{$.BaseBranch}}</span> | ||||||
| 					{{svg "octicon-triangle-down" 14 "dropdown icon"}} | 					{{svg "octicon-triangle-down" 14 "dropdown icon"}} | ||||||
| 				</div> | 				</div> | ||||||
| 				<div class="menu"> | 				<div class="menu"> | ||||||
|  | @ -26,21 +47,21 @@ | ||||||
| 					</div> | 					</div> | ||||||
| 					<div class="scrolling menu"> | 					<div class="scrolling menu"> | ||||||
| 						{{range .Branches}} | 						{{range .Branches}} | ||||||
| 							<div class="item {{if eq $.BaseBranch .}}selected{{end}}" data-url="{{$.RepoLink}}/compare/{{EscapePound .}}...{{if not $.PullRequestCtx.SameRepo}}{{$.HeadUser.Name}}/{{$.HeadRepo.Name}}:{{end}}{{EscapePound $.HeadBranch}}">{{$.BaseName}}:{{.}}</div> | 							<div class="item {{if eq $.BaseBranch .}}selected{{end}}" data-url="{{$.RepoLink}}/compare/{{EscapePound .}}...{{if not $.PullRequestCtx.SameRepo}}{{$.HeadUser.Name}}/{{$.HeadRepo.Name}}:{{end}}{{EscapePound $.HeadBranch}}">{{$BaseCompareName}}:{{.}}</div> | ||||||
| 						{{end}} | 						{{end}} | ||||||
| 						{{if not .PullRequestCtx.SameRepo}} | 						{{if not .PullRequestCtx.SameRepo}} | ||||||
| 							{{range .HeadBranches}} | 							{{range .HeadBranches}} | ||||||
| 								<div class="item" data-url="{{$.HeadRepo.Link}}/compare/{{EscapePound .}}...{{$.HeadUser.Name}}/{{$.HeadRepo.Name}}:{{EscapePound $.HeadBranch}}">{{$.HeadUser.Name}}:{{.}}</div> | 								<div class="item" data-url="{{$.HeadRepo.Link}}/compare/{{EscapePound .}}...{{$.HeadUser.Name}}/{{$.HeadRepo.Name}}:{{EscapePound $.HeadBranch}}">{{$HeadCompareName}}:{{.}}</div> | ||||||
| 							{{end}} | 							{{end}} | ||||||
| 						{{end}} | 						{{end}} | ||||||
| 						{{if .OwnForkRepo}} | 						{{if .OwnForkRepo}} | ||||||
| 							{{range .OwnForkRepoBranches}} | 							{{range .OwnForkRepoBranches}} | ||||||
| 								<div class="item" data-url="{{$.OwnForkRepo.Link}}/compare/{{EscapePound .}}...{{$.HeadUser.Name}}/{{$.HeadRepo.Name}}:{{EscapePound $.HeadBranch}}">{{$.OwnForkRepo.OwnerName}}:{{.}}</div> | 								<div class="item" data-url="{{$.OwnForkRepo.Link}}/compare/{{EscapePound .}}...{{$.HeadUser.Name}}/{{$.HeadRepo.Name}}:{{EscapePound $.HeadBranch}}">{{$OwnForkCompareName}}:{{.}}</div> | ||||||
| 							{{end}} | 							{{end}} | ||||||
| 						{{end}} | 						{{end}} | ||||||
| 						{{if .RootRepo}} | 						{{if .RootRepo}} | ||||||
| 							{{range .RootRepoBranches}} | 							{{range .RootRepoBranches}} | ||||||
| 								<div class="item" data-url="{{$.RootRepo.Link}}/compare/{{EscapePound .}}...{{$.HeadUser.Name}}/{{$.HeadRepo.Name}}:{{EscapePound $.HeadBranch}}">{{$.RootRepo.OwnerName}}:{{.}}</div> | 								<div class="item" data-url="{{$.RootRepo.Link}}/compare/{{EscapePound .}}...{{$.HeadUser.Name}}/{{$.HeadRepo.Name}}:{{EscapePound $.HeadBranch}}">{{$RootRepoCompareName}}:{{.}}</div> | ||||||
| 							{{end}} | 							{{end}} | ||||||
| 						{{end}} | 						{{end}} | ||||||
| 					</div> | 					</div> | ||||||
|  | @ -49,7 +70,7 @@ | ||||||
| 			... | 			... | ||||||
| 			<div class="ui floating filter dropdown"> | 			<div class="ui floating filter dropdown"> | ||||||
| 				<div class="ui basic small button"> | 				<div class="ui basic small button"> | ||||||
| 					<span class="text">{{.i18n.Tr "repo.pulls.compare_compare"}}: {{$.HeadUser.Name}}:{{$.HeadBranch}}</span> | 					<span class="text">{{.i18n.Tr "repo.pulls.compare_compare"}}: {{$HeadCompareName}}:{{$.HeadBranch}}</span> | ||||||
| 					{{svg "octicon-triangle-down" 14 "dropdown icon"}} | 					{{svg "octicon-triangle-down" 14 "dropdown icon"}} | ||||||
| 				</div> | 				</div> | ||||||
| 				<div class="menu"> | 				<div class="menu"> | ||||||
|  | @ -59,21 +80,21 @@ | ||||||
| 					</div> | 					</div> | ||||||
| 					<div class="scrolling menu"> | 					<div class="scrolling menu"> | ||||||
| 						{{range .HeadBranches}} | 						{{range .HeadBranches}} | ||||||
| 							<div class="{{if eq $.HeadBranch .}}selected{{end}} item" data-url="{{$.RepoLink}}/compare/{{EscapePound $.BaseBranch}}...{{if not $.PullRequestCtx.SameRepo}}{{$.HeadUser.Name}}/{{$.HeadRepo.Name}}:{{end}}{{EscapePound .}}">{{$.HeadUser.Name}}:{{.}}</div> | 							<div class="{{if eq $.HeadBranch .}}selected{{end}} item" data-url="{{$.RepoLink}}/compare/{{EscapePound $.BaseBranch}}...{{if not $.PullRequestCtx.SameRepo}}{{$.HeadUser.Name}}/{{$.HeadRepo.Name}}:{{end}}{{EscapePound .}}">{{$HeadCompareName}}:{{.}}</div> | ||||||
| 						{{end}} | 						{{end}} | ||||||
| 						{{if not .PullRequestCtx.SameRepo}} | 						{{if not .PullRequestCtx.SameRepo}} | ||||||
| 							{{range .Branches}} | 							{{range .Branches}} | ||||||
| 								<div class="item" data-url="{{$.RepoLink}}/compare/{{EscapePound $.BaseBranch}}...{{$.BaseName}}/{{$.Repository.Name}}:{{EscapePound .}}">{{$.BaseName}}:{{.}}</div> | 								<div class="item" data-url="{{$.RepoLink}}/compare/{{EscapePound $.BaseBranch}}...{{$.BaseName}}/{{$.Repository.Name}}:{{EscapePound .}}">{{$BaseCompareName}}:{{.}}</div> | ||||||
| 							{{end}} | 							{{end}} | ||||||
| 						{{end}} | 						{{end}} | ||||||
| 						{{if .OwnForkRepo}} | 						{{if .OwnForkRepo}} | ||||||
| 							{{range .OwnForkRepoBranches}} | 							{{range .OwnForkRepoBranches}} | ||||||
| 								<div class="item" data-url="{{$.RepoLink}}/compare/{{EscapePound $.BaseBranch}}...{{$.OwnForkRepo.OwnerName}}/{{$.OwnForkRepo.Name}}:{{EscapePound .}}">{{$.OwnForkRepo.OwnerName}}:{{.}}</div> | 								<div class="item" data-url="{{$.RepoLink}}/compare/{{EscapePound $.BaseBranch}}...{{$.OwnForkRepo.OwnerName}}/{{$.OwnForkRepo.Name}}:{{EscapePound .}}">{{$OwnForkCompareName}}:{{.}}</div> | ||||||
| 							{{end}} | 							{{end}} | ||||||
| 						{{end}} | 						{{end}} | ||||||
| 						{{if .RootRepo}} | 						{{if .RootRepo}} | ||||||
| 							{{range .RootRepoBranches}} | 							{{range .RootRepoBranches}} | ||||||
| 								<div class="item" data-url="{{$.RepoLink}}/compare/{{EscapePound $.BaseBranch}}...{{$.RootRepo.OwnerName}}/{{$.RootRepo.Name}}:{{EscapePound .}}">{{$.RootRepo.OwnerName}}:{{.}}</div> | 								<div class="item" data-url="{{$.RepoLink}}/compare/{{EscapePound $.BaseBranch}}...{{$.RootRepo.OwnerName}}/{{$.RootRepo.Name}}:{{EscapePound .}}">{{$RootRepoCompareName}}:{{.}}</div> | ||||||
| 							{{end}} | 							{{end}} | ||||||
| 						{{end}} | 						{{end}} | ||||||
| 					</div> | 					</div> | ||||||
|  |  | ||||||
|  | @ -64,7 +64,7 @@ | ||||||
| 			{{if eq $n 0}} | 			{{if eq $n 0}} | ||||||
| 				{{if and .CanCompareOrPull .IsViewBranch (not .Repository.IsArchived)}} | 				{{if and .CanCompareOrPull .IsViewBranch (not .Repository.IsArchived)}} | ||||||
| 					<div class="fitted item mx-0"> | 					<div class="fitted item mx-0"> | ||||||
| 						<a href="{{.BaseRepo.Link}}/compare/{{.BaseRepo.DefaultBranch | EscapePound}}...{{if ne .Repository.Owner.Name .BaseRepo.Owner.Name}}{{.Repository.Owner.Name}}:{{end}}{{.BranchName | EscapePound}}"> | 						<a href="{{.BaseRepo.Link}}/compare/{{.BaseRepo.DefaultBranch | EscapePound}}...{{if ne .Repository.Owner.Name .BaseRepo.Owner.Name}}{{.Repository.Owner.Name}}{{if .BaseRepo.IsFork}}/{{.Repository.Name}}{{end}}:{{end}}{{.BranchName | EscapePound}}"> | ||||||
| 							<button id="new-pull-request" class="ui compact basic button">{{if .PullRequestCtx.Allowed}}{{.i18n.Tr "repo.pulls.compare_changes"}}{{else}}{{.i18n.Tr "action.compare_branch"}}{{end}}</button> | 							<button id="new-pull-request" class="ui compact basic button">{{if .PullRequestCtx.Allowed}}{{.i18n.Tr "repo.pulls.compare_changes"}}{{else}}{{.i18n.Tr "action.compare_branch"}}{{end}}</button> | ||||||
| 						</a> | 						</a> | ||||||
| 					</div> | 					</div> | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue