You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

compare.tmpl 13KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. {{template "base/head" .}}
  2. <div role="main" aria-label="{{.Title}}" class="page-content repository diff {{if .PageIsComparePull}}compare pull{{end}}">
  3. {{template "repo/header" .}}
  4. {{$showDiffBox := false}}
  5. <div class="ui container">
  6. <h2 class="ui header">
  7. {{if and $.PageIsComparePull $.IsSigned (not .Repository.IsArchived)}}
  8. {{.locale.Tr "repo.pulls.compare_changes"}}
  9. <div class="sub header">{{.locale.Tr "repo.pulls.compare_changes_desc"}}</div>
  10. {{else}}
  11. {{.locale.Tr "action.compare_commits_general"}}
  12. {{end}}
  13. </h2>
  14. {{if .Flash.WarningMsg}}
  15. {{/*
  16. There's already an importing of alert.tmpl in new_form.tmpl,
  17. but only the negative message will be displayed within forms for some reasons, see semantic.css:10659.
  18. To avoid repeated negative messages, the importing here if for .Flash.WarningMsg only.
  19. */}}
  20. {{template "base/alert" .}}
  21. {{end}}
  22. {{$BaseCompareName := $.BaseName -}}
  23. {{- $HeadCompareName := $.HeadRepo.OwnerName -}}
  24. {{- if and (eq $.BaseName $.HeadRepo.OwnerName) (ne $.Repository.Name $.HeadRepo.Name) -}}
  25. {{- $HeadCompareName = printf "%s/%s" $.HeadRepo.OwnerName $.HeadRepo.Name -}}
  26. {{- end -}}
  27. {{- $OwnForkCompareName := "" -}}
  28. {{- if .OwnForkRepo -}}
  29. {{- $OwnForkCompareName = .OwnForkRepo.OwnerName -}}
  30. {{- end -}}
  31. {{- $RootRepoCompareName := "" -}}
  32. {{- if .RootRepo -}}
  33. {{- $RootRepoCompareName = .RootRepo.OwnerName -}}
  34. {{- if eq $.HeadRepo.OwnerName .RootRepo.OwnerName -}}
  35. {{- $HeadCompareName = printf "%s/%s" $.HeadRepo.OwnerName $.HeadRepo.Name -}}
  36. {{- end -}}
  37. {{- end -}}
  38. <div class="ui segment choose branch">
  39. <a href="{{$.HeadRepo.Link}}/compare/{{PathEscapeSegments $.HeadBranch}}{{$.CompareSeparator}}{{if not $.PullRequestCtx.SameRepo}}{{PathEscape $.BaseName}}/{{PathEscape $.Repository.Name}}:{{end}}{{PathEscapeSegments $.BaseBranch}}" title="{{.locale.Tr "repo.pulls.switch_head_and_base"}}">{{svg "octicon-git-compare"}}</a>
  40. <div class="ui floating filter dropdown" data-no-results="{{.locale.Tr "repo.pulls.no_results"}}">
  41. <div class="ui basic small button">
  42. <span class="text">{{if $.PageIsComparePull}}{{.locale.Tr "repo.pulls.compare_base"}}{{else}}{{.locale.Tr "repo.compare.compare_base"}}{{end}}: {{$BaseCompareName}}:{{$.BaseBranch}}</span>
  43. {{svg "octicon-triangle-down" 14 "dropdown icon"}}
  44. </div>
  45. <div class="menu">
  46. <div class="ui icon search input">
  47. <i class="icon">{{svg "octicon-filter" 16}}</i>
  48. <input name="search" placeholder="{{.locale.Tr "repo.filter_branch_and_tag"}}...">
  49. </div>
  50. <div class="header">
  51. <div class="ui grid">
  52. <div class="two column row">
  53. <a class="reference column" href="#" data-target=".base-branch-list">
  54. <span class="text black">
  55. {{svg "octicon-git-branch" 16 "gt-mr-2"}}{{.locale.Tr "repo.branches"}}
  56. </span>
  57. </a>
  58. <a class="reference column" href="#" data-target=".base-tag-list">
  59. <span class="text black">
  60. {{svg "octicon-tag" 16 "gt-mr-2"}}{{.locale.Tr "repo.tags"}}
  61. </span>
  62. </a>
  63. </div>
  64. </div>
  65. </div>
  66. <div class="scrolling menu reference-list-menu base-branch-list">
  67. {{range .Branches}}
  68. <div class="item {{if eq $.BaseBranch .}}selected{{end}}" data-url="{{$.RepoLink}}/compare/{{PathEscapeSegments .}}{{$.CompareSeparator}}{{if not $.PullRequestCtx.SameRepo}}{{PathEscape $.HeadUser.Name}}/{{PathEscape $.HeadRepo.Name}}:{{end}}{{PathEscapeSegments $.HeadBranch}}">{{$BaseCompareName}}:{{.}}</div>
  69. {{end}}
  70. {{if not .PullRequestCtx.SameRepo}}
  71. {{range .HeadBranches}}
  72. <div class="item" data-url="{{$.HeadRepo.Link}}/compare/{{PathEscapeSegments .}}{{$.CompareSeparator}}{{PathEscape $.HeadUser.Name}}/{{PathEscape $.HeadRepo.Name}}:{{PathEscapeSegments $.HeadBranch}}">{{$HeadCompareName}}:{{.}}</div>
  73. {{end}}
  74. {{end}}
  75. {{if .OwnForkRepo}}
  76. {{range .OwnForkRepoBranches}}
  77. <div class="item" data-url="{{$.OwnForkRepo.Link}}/compare/{{PathEscapeSegments .}}{{$.CompareSeparator}}{{PathEscape $.HeadUser.Name}}/{{PathEscape $.HeadRepo.Name}}:{{PathEscapeSegments $.HeadBranch}}">{{$OwnForkCompareName}}:{{.}}</div>
  78. {{end}}
  79. {{end}}
  80. {{if .RootRepo}}
  81. {{range .RootRepoBranches}}
  82. <div class="item" data-url="{{$.RootRepo.Link}}/compare/{{PathEscapeSegments .}}{{$.CompareSeparator}}{{PathEscape $.HeadUser.Name}}/{{PathEscape $.HeadRepo.Name}}:{{PathEscapeSegments $.HeadBranch}}">{{$RootRepoCompareName}}:{{.}}</div>
  83. {{end}}
  84. {{end}}
  85. </div>
  86. <div class="scrolling menu reference-list-menu base-tag-list gt-hidden">
  87. {{range .Tags}}
  88. <div class="item {{if eq $.BaseBranch .}}selected{{end}}" data-url="{{$.RepoLink}}/compare/{{PathEscapeSegments .}}{{$.CompareSeparator}}{{if not $.PullRequestCtx.SameRepo}}{{PathEscape $.HeadUser.Name}}/{{PathEscape $.HeadRepo.Name}}:{{end}}{{PathEscapeSegments $.HeadBranch}}">{{$BaseCompareName}}:{{.}}</div>
  89. {{end}}
  90. {{if not .PullRequestCtx.SameRepo}}
  91. {{range .HeadTags}}
  92. <div class="item" data-url="{{$.HeadRepo.Link}}/compare/{{PathEscapeSegments .}}{{$.CompareSeparator}}{{PathEscape $.HeadUser.Name}}/{{PathEscape $.HeadRepo.Name}}:{{PathEscapeSegments $.HeadBranch}}">{{$HeadCompareName}}:{{.}}</div>
  93. {{end}}
  94. {{end}}
  95. {{if .OwnForkRepo}}
  96. {{range .OwnForkRepoTags}}
  97. <div class="item" data-url="{{$.OwnForkRepo.Link}}/compare/{{PathEscapeSegments .}}{{$.CompareSeparator}}{{PathEscape $.HeadUser.Name}}/{{PathEscape $.HeadRepo.Name}}:{{PathEscapeSegments $.HeadBranch}}">{{$OwnForkCompareName}}:{{.}}</div>
  98. {{end}}
  99. {{end}}
  100. {{if .RootRepo}}
  101. {{range .RootRepoTags}}
  102. <div class="item" data-url="{{$.RootRepo.Link}}/compare/{{PathEscapeSegments .}}{{$.CompareSeparator}}{{PathEscape $.HeadUser.Name}}/{{PathEscape $.HeadRepo.Name}}:{{PathEscapeSegments $.HeadBranch}}">{{$RootRepoCompareName}}:{{.}}</div>
  103. {{end}}
  104. {{end}}
  105. </div>
  106. </div>
  107. </div>
  108. <a href="{{.RepoLink}}/compare/{{PathEscapeSegments .BaseBranch}}{{.OtherCompareSeparator}}{{if not $.PullRequestCtx.SameRepo}}{{PathEscape $.HeadUser.Name}}/{{PathEscape $.HeadRepo.Name}}:{{end}}{{PathEscapeSegments $.HeadBranch}}" title="{{.locale.Tr "repo.pulls.switch_comparison_type"}}">{{.CompareSeparator}}</a>
  109. <div class="ui floating filter dropdown">
  110. <div class="ui basic small button">
  111. <span class="text">{{if $.PageIsComparePull}}{{.locale.Tr "repo.pulls.compare_compare"}}{{else}}{{.locale.Tr "repo.compare.compare_head"}}{{end}}: {{$HeadCompareName}}:{{$.HeadBranch}}</span>
  112. {{svg "octicon-triangle-down" 14 "dropdown icon"}}
  113. </div>
  114. <div class="menu">
  115. <div class="ui icon search input">
  116. <i class="icon">{{svg "octicon-filter" 16}}</i>
  117. <input name="search" placeholder="{{.locale.Tr "repo.filter_branch_and_tag"}}...">
  118. </div>
  119. <div class="header">
  120. <div class="ui grid">
  121. <div class="two column row">
  122. <a class="reference column" href="#" data-target=".head-branch-list">
  123. <span class="text black">
  124. {{svg "octicon-git-branch" 16 "gt-mr-2"}}{{.locale.Tr "repo.branches"}}
  125. </span>
  126. </a>
  127. <a class="reference column" href="#" data-target=".head-tag-list">
  128. <span class="text black">
  129. {{svg "octicon-tag" 16 "gt-mr-2"}}{{.locale.Tr "repo.tags"}}
  130. </span>
  131. </a>
  132. </div>
  133. </div>
  134. </div>
  135. <div class="scrolling menu reference-list-menu head-branch-list">
  136. {{range .HeadBranches}}
  137. <div class="{{if eq $.HeadBranch .}}selected{{end}} item" data-url="{{$.RepoLink}}/compare/{{PathEscapeSegments $.BaseBranch}}{{$.CompareSeparator}}{{if not $.PullRequestCtx.SameRepo}}{{PathEscape $.HeadUser.Name}}/{{PathEscape $.HeadRepo.Name}}:{{end}}{{PathEscapeSegments .}}">{{$HeadCompareName}}:{{.}}</div>
  138. {{end}}
  139. {{if not .PullRequestCtx.SameRepo}}
  140. {{range .Branches}}
  141. <div class="item" data-url="{{$.RepoLink}}/compare/{{PathEscapeSegments $.BaseBranch}}{{$.CompareSeparator}}{{PathEscape $.BaseName}}/{{PathEscape $.Repository.Name}}:{{PathEscapeSegments .}}">{{$BaseCompareName}}:{{.}}</div>
  142. {{end}}
  143. {{end}}
  144. {{if .OwnForkRepo}}
  145. {{range .OwnForkRepoBranches}}
  146. <div class="item" data-url="{{$.RepoLink}}/compare/{{PathEscapeSegments $.BaseBranch}}{{$.CompareSeparator}}{{PathEscape $.OwnForkRepo.OwnerName}}/{{PathEscape $.OwnForkRepo.Name}}:{{PathEscapeSegments .}}">{{$OwnForkCompareName}}:{{.}}</div>
  147. {{end}}
  148. {{end}}
  149. {{if .RootRepo}}
  150. {{range .RootRepoBranches}}
  151. <div class="item" data-url="{{$.RepoLink}}/compare/{{PathEscapeSegments $.BaseBranch}}{{$.CompareSeparator}}{{PathEscape $.RootRepo.OwnerName}}/{{PathEscape $.RootRepo.Name}}:{{PathEscapeSegments .}}">{{$RootRepoCompareName}}:{{.}}</div>
  152. {{end}}
  153. {{end}}
  154. </div>
  155. <div class="scrolling menu reference-list-menu head-tag-list gt-hidden">
  156. {{range .HeadTags}}
  157. <div class="{{if eq $.HeadBranch .}}selected{{end}} item" data-url="{{$.RepoLink}}/compare/{{PathEscapeSegments $.BaseBranch}}{{$.CompareSeparator}}{{if not $.PullRequestCtx.SameRepo}}{{PathEscape $.HeadUser.Name}}/{{PathEscape $.HeadRepo.Name}}:{{end}}{{PathEscapeSegments .}}">{{$HeadCompareName}}:{{.}}</div>
  158. {{end}}
  159. {{if not .PullRequestCtx.SameRepo}}
  160. {{range .Tags}}
  161. <div class="item" data-url="{{$.RepoLink}}/compare/{{PathEscapeSegments $.BaseBranch}}{{$.CompareSeparator}}{{PathEscape $.BaseName}}/{{PathEscape $.Repository.Name}}:{{PathEscapeSegments .}}">{{$BaseCompareName}}:{{.}}</div>
  162. {{end}}
  163. {{end}}
  164. {{if .OwnForkRepo}}
  165. {{range .OwnForkRepoTags}}
  166. <div class="item" data-url="{{$.RepoLink}}/compare/{{PathEscapeSegments $.BaseBranch}}{{$.CompareSeparator}}{{PathEscape $.OwnForkRepo.OwnerName}}/{{PathEscape $.OwnForkRepo.Name}}:{{PathEscapeSegments .}}">{{$OwnForkCompareName}}:{{.}}</div>
  167. {{end}}
  168. {{end}}
  169. {{if .RootRepo}}
  170. {{range .RootRepoTags}}
  171. <div class="item" data-url="{{$.RepoLink}}/compare/{{PathEscapeSegments $.BaseBranch}}{{$.CompareSeparator}}{{PathEscape $.RootRepo.OwnerName}}/{{PathEscape $.RootRepo.Name}}:{{PathEscapeSegments .}}">{{$RootRepoCompareName}}:{{.}}</div>
  172. {{end}}
  173. {{end}}
  174. </div>
  175. </div>
  176. </div>
  177. </div>
  178. {{if .IsNothingToCompare}}
  179. {{if and $.IsSigned $.AllowEmptyPr (not .Repository.IsArchived)}}
  180. <div class="ui segment">{{.locale.Tr "repo.pulls.nothing_to_compare_and_allow_empty_pr"}}</div>
  181. <div class="ui info message show-form-container {{if .Flash}}gt-hidden{{end}}">
  182. <button class="ui button green show-form">{{.locale.Tr "repo.pulls.new"}}</button>
  183. </div>
  184. <div class="pullrequest-form {{if not .Flash}}gt-hidden{{end}}">
  185. {{template "repo/issue/new_form" .}}
  186. </div>
  187. {{else}}
  188. <div class="ui segment">{{.locale.Tr "repo.pulls.nothing_to_compare"}}</div>
  189. {{end}}
  190. {{else if and .PageIsComparePull (gt .CommitCount 0)}}
  191. {{if .HasPullRequest}}
  192. <div class="ui segment grid title">
  193. <div class="twelve wide column issue-title">
  194. {{.locale.Tr "repo.pulls.has_pull_request" (print (Escape $.RepoLink) "/pulls/" .PullRequest.Issue.Index) (Escape $.RepoRelPath) .PullRequest.Index | Safe}}
  195. <h1>
  196. <span id="issue-title">{{RenderIssueTitle $.Context .PullRequest.Issue.Title $.RepoLink $.Repository.ComposeMetas}}</span>
  197. <span class="index">#{{.PullRequest.Issue.Index}}</span>
  198. </h1>
  199. </div>
  200. <div class="four wide column middle aligned text right">
  201. {{- if .PullRequest.HasMerged -}}
  202. <a href="{{Escape $.RepoLink}}/pulls/{{.PullRequest.Issue.Index}}" class="ui button purple show-form">{{svg "octicon-git-merge" 16}} {{.locale.Tr "repo.pulls.view"}}</a>
  203. {{else if .Issue.IsClosed}}
  204. <a href="{{Escape $.RepoLink}}/pulls/{{.PullRequest.Issue.Index}}" class="ui button red show-form">{{svg "octicon-issue-closed" 16}} {{.locale.Tr "repo.pulls.view"}}</a>
  205. {{else}}
  206. <a href="{{Escape $.RepoLink}}/pulls/{{.PullRequest.Issue.Index}}" class="ui button green show-form">{{svg "octicon-git-pull-request" 16}} {{.locale.Tr "repo.pulls.view"}}</a>
  207. {{end}}
  208. </div>
  209. </div>
  210. {{else}}
  211. {{if and $.IsSigned (not .Repository.IsArchived)}}
  212. <div class="ui info message show-form-container {{if .Flash}}gt-hidden{{end}}">
  213. <button class="ui button green show-form">{{.locale.Tr "repo.pulls.new"}}</button>
  214. </div>
  215. {{else if .Repository.IsArchived}}
  216. <div class="ui warning message gt-text-center">
  217. {{if .Repository.ArchivedUnix.IsZero}}
  218. {{.locale.Tr "repo.archive.title"}}
  219. {{else}}
  220. {{.locale.Tr "repo.archive.title_date" (DateTime "long" .Repository.ArchivedUnix) | Safe}}
  221. {{end}}
  222. </div>
  223. {{end}}
  224. {{if $.IsSigned}}
  225. <div class="pullrequest-form {{if not .Flash}}gt-hidden{{end}}">
  226. {{template "repo/issue/new_form" .}}
  227. </div>
  228. {{end}}
  229. {{$showDiffBox = true}}
  230. {{end}}
  231. {{else}}
  232. {{$showDiffBox = true}}
  233. {{end}}
  234. </div>
  235. {{if $showDiffBox}}
  236. <div class="ui container">
  237. {{template "repo/commits_table" .}}
  238. {{template "repo/diff/box" .}}
  239. </div>
  240. {{end}}
  241. </div>
  242. {{template "base/footer" .}}