Skip to content

Commit bf53cf0

Browse files
authored
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 <[email protected]>
1 parent f4629fc commit bf53cf0

File tree

2 files changed

+32
-11
lines changed

2 files changed

+32
-11
lines changed

templates/repo/diff/compare.tmpl

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,32 @@
1212
{{.i18n.Tr "action.compare_commits_general"}}
1313
{{ end }}
1414
</h2>
15+
{{ $BaseCompareName := $.BaseName -}}
16+
{{- $HeadCompareName := $.HeadRepo.OwnerName -}}
17+
{{- if and (eq $.BaseName $.HeadRepo.OwnerName) (ne $.Repository.Name $.HeadRepo.Name) -}}
18+
{{- $HeadCompareName = printf "%s/%s" $.HeadRepo.OwnerName $.HeadRepo.Name -}}
19+
{{- end -}}
20+
{{- $OwnForkCompareName := "" -}}
21+
{{- if .OwnForkRepo -}}
22+
{{- $OwnForkCompareName = .OwnForkRepo.OwnerName -}}
23+
{{- end -}}
24+
{{- $RootRepoCompareName := "" -}}
25+
{{- if .RootRepo -}}
26+
{{- $RootRepoCompareName = .RootRepo.OwnerName -}}
27+
{{- if eq $.HeadRepo.OwnerName .RootRepo.OwnerName -}}
28+
{{- $HeadCompareName = printf "%s/%s" $.HeadRepo.OwnerName $.HeadRepo.Name -}}
29+
{{- end -}}
30+
{{- if .OwnForkRepo -}}
31+
{{- if eq $.OwnForkRepo.OwnerName .RootRepo.OwnerName -}}
32+
{{- $OwnForkRepoCompareName = printf "%s/%s" $.OwnForkRepo.OwnerName $.OwnForkRepo.Name -}}
33+
{{- end -}}
34+
{{- end -}}
35+
{{- end -}}
1536
<div class="ui segment choose branch">
1637
{{svg "octicon-git-compare"}}
1738
<div class="ui floating filter dropdown" data-no-results="{{.i18n.Tr "repo.pulls.no_results"}}">
1839
<div class="ui basic small button">
19-
<span class="text">{{.i18n.Tr "repo.pulls.compare_base"}}: {{$.BaseName}}:{{$.BaseBranch}}</span>
40+
<span class="text">{{.i18n.Tr "repo.pulls.compare_base"}}: {{$BaseCompareName}}:{{$.BaseBranch}}</span>
2041
{{svg "octicon-triangle-down" 14 "dropdown icon"}}
2142
</div>
2243
<div class="menu">
@@ -26,21 +47,21 @@
2647
</div>
2748
<div class="scrolling menu">
2849
{{range .Branches}}
29-
<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>
50+
<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>
3051
{{end}}
3152
{{if not .PullRequestCtx.SameRepo}}
3253
{{range .HeadBranches}}
33-
<div class="item" data-url="{{$.HeadRepo.Link}}/compare/{{EscapePound .}}...{{$.HeadUser.Name}}/{{$.HeadRepo.Name}}:{{EscapePound $.HeadBranch}}">{{$.HeadUser.Name}}:{{.}}</div>
54+
<div class="item" data-url="{{$.HeadRepo.Link}}/compare/{{EscapePound .}}...{{$.HeadUser.Name}}/{{$.HeadRepo.Name}}:{{EscapePound $.HeadBranch}}">{{$HeadCompareName}}:{{.}}</div>
3455
{{end}}
3556
{{end}}
3657
{{if .OwnForkRepo}}
3758
{{range .OwnForkRepoBranches}}
38-
<div class="item" data-url="{{$.OwnForkRepo.Link}}/compare/{{EscapePound .}}...{{$.HeadUser.Name}}/{{$.HeadRepo.Name}}:{{EscapePound $.HeadBranch}}">{{$.OwnForkRepo.OwnerName}}:{{.}}</div>
59+
<div class="item" data-url="{{$.OwnForkRepo.Link}}/compare/{{EscapePound .}}...{{$.HeadUser.Name}}/{{$.HeadRepo.Name}}:{{EscapePound $.HeadBranch}}">{{$OwnForkCompareName}}:{{.}}</div>
3960
{{end}}
4061
{{end}}
4162
{{if .RootRepo}}
4263
{{range .RootRepoBranches}}
43-
<div class="item" data-url="{{$.RootRepo.Link}}/compare/{{EscapePound .}}...{{$.HeadUser.Name}}/{{$.HeadRepo.Name}}:{{EscapePound $.HeadBranch}}">{{$.RootRepo.OwnerName}}:{{.}}</div>
64+
<div class="item" data-url="{{$.RootRepo.Link}}/compare/{{EscapePound .}}...{{$.HeadUser.Name}}/{{$.HeadRepo.Name}}:{{EscapePound $.HeadBranch}}">{{$RootRepoCompareName}}:{{.}}</div>
4465
{{end}}
4566
{{end}}
4667
</div>
@@ -49,7 +70,7 @@
4970
...
5071
<div class="ui floating filter dropdown">
5172
<div class="ui basic small button">
52-
<span class="text">{{.i18n.Tr "repo.pulls.compare_compare"}}: {{$.HeadUser.Name}}:{{$.HeadBranch}}</span>
73+
<span class="text">{{.i18n.Tr "repo.pulls.compare_compare"}}: {{$HeadCompareName}}:{{$.HeadBranch}}</span>
5374
{{svg "octicon-triangle-down" 14 "dropdown icon"}}
5475
</div>
5576
<div class="menu">
@@ -59,21 +80,21 @@
5980
</div>
6081
<div class="scrolling menu">
6182
{{range .HeadBranches}}
62-
<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>
83+
<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>
6384
{{end}}
6485
{{if not .PullRequestCtx.SameRepo}}
6586
{{range .Branches}}
66-
<div class="item" data-url="{{$.RepoLink}}/compare/{{EscapePound $.BaseBranch}}...{{$.BaseName}}/{{$.Repository.Name}}:{{EscapePound .}}">{{$.BaseName}}:{{.}}</div>
87+
<div class="item" data-url="{{$.RepoLink}}/compare/{{EscapePound $.BaseBranch}}...{{$.BaseName}}/{{$.Repository.Name}}:{{EscapePound .}}">{{$BaseCompareName}}:{{.}}</div>
6788
{{end}}
6889
{{end}}
6990
{{if .OwnForkRepo}}
7091
{{range .OwnForkRepoBranches}}
71-
<div class="item" data-url="{{$.RepoLink}}/compare/{{EscapePound $.BaseBranch}}...{{$.OwnForkRepo.OwnerName}}/{{$.OwnForkRepo.Name}}:{{EscapePound .}}">{{$.OwnForkRepo.OwnerName}}:{{.}}</div>
92+
<div class="item" data-url="{{$.RepoLink}}/compare/{{EscapePound $.BaseBranch}}...{{$.OwnForkRepo.OwnerName}}/{{$.OwnForkRepo.Name}}:{{EscapePound .}}">{{$OwnForkCompareName}}:{{.}}</div>
7293
{{end}}
7394
{{end}}
7495
{{if .RootRepo}}
7596
{{range .RootRepoBranches}}
76-
<div class="item" data-url="{{$.RepoLink}}/compare/{{EscapePound $.BaseBranch}}...{{$.RootRepo.OwnerName}}/{{$.RootRepo.Name}}:{{EscapePound .}}">{{$.RootRepo.OwnerName}}:{{.}}</div>
97+
<div class="item" data-url="{{$.RepoLink}}/compare/{{EscapePound $.BaseBranch}}...{{$.RootRepo.OwnerName}}/{{$.RootRepo.Name}}:{{EscapePound .}}">{{$RootRepoCompareName}}:{{.}}</div>
7798
{{end}}
7899
{{end}}
79100
</div>

templates/repo/home.tmpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@
6464
{{if eq $n 0}}
6565
{{if and .CanCompareOrPull .IsViewBranch (not .Repository.IsArchived)}}
6666
<div class="fitted item mx-0">
67-
<a href="{{.BaseRepo.Link}}/compare/{{.BaseRepo.DefaultBranch | EscapePound}}...{{if ne .Repository.Owner.Name .BaseRepo.Owner.Name}}{{.Repository.Owner.Name}}:{{end}}{{.BranchName | EscapePound}}">
67+
<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}}">
6868
<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>
6969
</a>
7070
</div>

0 commit comments

Comments
 (0)