code.gitea.io/gitea@v1.22.3/templates/repo/branch/list.tmpl (about) 1 {{template "base/head" .}} 2 <div role="main" aria-label="{{.Title}}" class="page-content ui repository branches"> 3 {{template "repo/header" .}} 4 <div class="ui container"> 5 {{template "base/alert" .}} 6 {{template "repo/sub_menu" .}} 7 {{if .DefaultBranchBranch}} 8 <h4 class="ui top attached header"> 9 {{ctx.Locale.Tr "repo.default_branch"}} 10 {{if and $.IsWriter (not $.Repository.IsArchived) (not .IsDeleted)}} 11 <a role="button" class="right" href="{{.RepoLink}}/settings/branches" data-tooltip-content="{{ctx.Locale.Tr "repo.settings.branches.switch_default_branch"}}"> 12 {{svg "octicon-arrow-switch"}} 13 </a> 14 {{end}} 15 </h4> 16 17 <div class="ui attached table segment"> 18 <table class="ui very basic striped fixed table single line"> 19 <tbody> 20 <tr> 21 <td> 22 <div class="flex-text-block"> 23 {{if .DefaultBranchBranch.IsProtected}}{{svg "octicon-shield-lock"}}{{end}} 24 <a class="gt-ellipsis" href="{{.RepoLink}}/src/branch/{{PathEscapeSegments .DefaultBranchBranch.DBBranch.Name}}">{{.DefaultBranchBranch.DBBranch.Name}}</a> 25 <button class="btn interact-fg tw-px-1" data-clipboard-text="{{.DefaultBranchBranch.DBBranch.Name}}">{{svg "octicon-copy" 14}}</button> 26 {{template "repo/commit_statuses" dict "Status" (index $.CommitStatus .DefaultBranchBranch.DBBranch.CommitID) "Statuses" (index $.CommitStatuses .DefaultBranchBranch.DBBranch.CommitID)}} 27 </div> 28 <p class="info tw-flex tw-items-center tw-my-1">{{svg "octicon-git-commit" 16 "tw-mr-1"}}<a href="{{.RepoLink}}/commit/{{PathEscape .DefaultBranchBranch.DBBranch.CommitID}}">{{ShortSha .DefaultBranchBranch.DBBranch.CommitID}}</a> · <span class="commit-message">{{RenderCommitMessage $.Context .DefaultBranchBranch.DBBranch.CommitMessage (.Repository.ComposeMetas ctx)}}</span> · {{ctx.Locale.Tr "org.repo_updated"}} {{TimeSince .DefaultBranchBranch.DBBranch.CommitTime.AsTime ctx.Locale}}{{if .DefaultBranchBranch.DBBranch.Pusher}} {{template "shared/user/avatarlink" dict "user" .DefaultBranchBranch.DBBranch.Pusher}}{{template "shared/user/namelink" .DefaultBranchBranch.DBBranch.Pusher}}{{end}}</p> 29 </td> 30 <td class="right aligned middle aligned overflow-visible"> 31 {{if and $.IsWriter (not $.Repository.IsArchived) (not .IsDeleted)}} 32 <button class="btn interact-bg show-create-branch-modal tw-p-2" 33 data-modal="#create-branch-modal" 34 data-branch-from="{{$.DefaultBranchBranch.DBBranch.Name}}" 35 data-branch-from-urlcomponent="{{PathEscapeSegments $.DefaultBranchBranch.DBBranch.Name}}" 36 data-tooltip-content="{{ctx.Locale.Tr "repo.branch.new_branch_from" ($.DefaultBranchBranch.DBBranch.Name)}}" 37 > 38 {{svg "octicon-git-branch"}} 39 </button> 40 {{end}} 41 {{if .EnableFeed}} 42 <a role="button" class="btn interact-bg tw-p-2" href="{{$.FeedURL}}/rss/branch/{{PathEscapeSegments .DefaultBranchBranch.DBBranch.Name}}">{{svg "octicon-rss"}}</a> 43 {{end}} 44 {{if not $.DisableDownloadSourceArchives}} 45 <div class="ui dropdown btn interact-bg tw-p-2" data-tooltip-content="{{ctx.Locale.Tr "repo.branch.download" ($.DefaultBranchBranch.DBBranch.Name)}}"> 46 {{svg "octicon-download"}} 47 <div class="menu"> 48 <a class="item archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments $.DefaultBranchBranch.DBBranch.Name}}.zip" rel="nofollow">{{svg "octicon-file-zip"}} ZIP</a> 49 <a class="item archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments $.DefaultBranchBranch.DBBranch.Name}}.tar.gz" rel="nofollow">{{svg "octicon-file-zip"}} TAR.GZ</a> 50 </div> 51 </div> 52 {{end}} 53 {{if and $.IsWriter (not $.Repository.IsArchived) (not .IsDeleted) (not $.IsMirror)}} 54 <button class="btn interact-bg tw-p-2 show-modal show-rename-branch-modal" 55 data-is-default-branch="true" 56 data-modal="#rename-branch-modal" 57 data-old-branch-name="{{$.DefaultBranchBranch.DBBranch.Name}}" 58 data-tooltip-content="{{ctx.Locale.Tr "repo.branch.rename" ($.DefaultBranchBranch.DBBranch.Name)}}" 59 > 60 {{svg "octicon-pencil"}} 61 </button> 62 {{end}} 63 </td> 64 </tr> 65 </tbody> 66 </table> 67 </div> 68 {{end}} 69 70 <h4 class="ui top attached header tw-flex tw-items-center tw-justify-between"> 71 <div class="tw-flex tw-items-center"> 72 {{ctx.Locale.Tr "repo.branches"}} 73 </div> 74 </h4> 75 76 <div class="ui attached segment"> 77 <form class="ignore-dirty" method="get"> 78 {{template "shared/search/combo" dict "Value" .Keyword "Placeholder" (ctx.Locale.Tr "search.branch_kind")}} 79 </form> 80 </div> 81 82 <div class="ui attached table segment"> 83 <table class="ui very basic striped fixed table single line"> 84 <tbody> 85 {{range .Branches}} 86 <tr> 87 <td class="eight wide"> 88 {{if .DBBranch.IsDeleted}} 89 <div class="flex-text-block"> 90 <span class="gt-ellipsis">{{.DBBranch.Name}}</span> 91 <button class="btn interact-fg tw-px-1" data-clipboard-text="{{.DBBranch.Name}}">{{svg "octicon-copy" 14}}</button> 92 </div> 93 <p class="info">{{ctx.Locale.Tr "repo.branch.deleted_by" .DBBranch.DeletedBy.Name}} {{TimeSinceUnix .DBBranch.DeletedUnix ctx.Locale}}</p> 94 {{else}} 95 <div class="flex-text-block"> 96 {{if .IsProtected}}{{svg "octicon-shield-lock"}}{{end}} 97 <a class="gt-ellipsis" href="{{$.RepoLink}}/src/branch/{{PathEscapeSegments .DBBranch.Name}}">{{.DBBranch.Name}}</a> 98 <button class="btn interact-fg tw-px-1" data-clipboard-text="{{.DBBranch.Name}}">{{svg "octicon-copy" 14}}</button> 99 {{template "repo/commit_statuses" dict "Status" (index $.CommitStatus .DBBranch.CommitID) "Statuses" (index $.CommitStatuses .DBBranch.CommitID)}} 100 </div> 101 <p class="info tw-flex tw-items-center tw-my-1">{{svg "octicon-git-commit" 16 "tw-mr-1"}}<a href="{{$.RepoLink}}/commit/{{PathEscape .DBBranch.CommitID}}">{{ShortSha .DBBranch.CommitID}}</a> · <span class="commit-message">{{RenderCommitMessage $.Context .DBBranch.CommitMessage ($.Repository.ComposeMetas ctx)}}</span> · {{ctx.Locale.Tr "org.repo_updated"}} {{TimeSince .DBBranch.CommitTime.AsTime ctx.Locale}}{{if .DBBranch.Pusher}} {{template "shared/user/avatarlink" dict "user" .DBBranch.Pusher}} {{template "shared/user/namelink" .DBBranch.Pusher}}{{end}}</p> 102 {{end}} 103 </td> 104 <td class="two wide ui"> 105 {{if and (not .DBBranch.IsDeleted) $.DefaultBranchBranch}} 106 <div class="commit-divergence"> 107 <div class="bar-group"> 108 <div class="count count-behind">{{.CommitsBehind}}</div> 109 {{/* old code bears 0/0.0 = NaN output, so it might output invalid "width: NaNpx", it just works and doesn't caues any problem. */}} 110 <div class="bar bar-behind" style="width: {{Eval 100 "*" .CommitsBehind "/" "(" .CommitsBehind "+" .CommitsAhead "+" 0.0 ")"}}%"></div> 111 </div> 112 <div class="bar-group"> 113 <div class="count count-ahead">{{.CommitsAhead}}</div> 114 <div class="bar bar-ahead" style="width: {{Eval 100 "*" .CommitsAhead "/" "(" .CommitsBehind "+" .CommitsAhead "+" 0.0 ")"}}%"></div> 115 </div> 116 </div> 117 {{end}} 118 </td> 119 <td class="two wide right aligned"> 120 {{if not .LatestPullRequest}} 121 {{if .IsIncluded}} 122 <span class="ui orange large label" data-tooltip-content="{{ctx.Locale.Tr "repo.branch.included_desc"}}"> 123 {{svg "octicon-git-pull-request"}} {{ctx.Locale.Tr "repo.branch.included"}} 124 </span> 125 {{else if and (not .DBBranch.IsDeleted) $.AllowsPulls (gt .CommitsAhead 0)}} 126 <a href="{{$.RepoLink}}/compare/{{PathEscapeSegments $.DefaultBranchBranch.DBBranch.Name}}...{{if ne $.Repository.Owner.Name $.Owner.Name}}{{PathEscape $.Owner.Name}}:{{end}}{{PathEscapeSegments .DBBranch.Name}}"> 127 <button id="new-pull-request" class="ui compact basic button tw-mr-0">{{if $.CanPull}}{{ctx.Locale.Tr "repo.pulls.compare_changes"}}{{else}}{{ctx.Locale.Tr "action.compare_branch"}}{{end}}</button> 128 </a> 129 {{end}} 130 {{else if and .LatestPullRequest.HasMerged .MergeMovedOn}} 131 {{if and (not .DBBranch.IsDeleted) $.AllowsPulls (gt .CommitsAhead 0)}} 132 <a href="{{$.RepoLink}}/compare/{{PathEscapeSegments $.DefaultBranchBranch.DBBranch.Name}}...{{if ne $.Repository.Owner.Name $.Owner.Name}}{{PathEscape $.Owner.Name}}:{{end}}{{PathEscapeSegments .DBBranch.Name}}"> 133 <button id="new-pull-request" class="ui compact basic button tw-mr-0">{{if $.CanPull}}{{ctx.Locale.Tr "repo.pulls.compare_changes"}}{{else}}{{ctx.Locale.Tr "action.compare_branch"}}{{end}}</button> 134 </a> 135 {{end}} 136 {{else}} 137 <a href="{{.LatestPullRequest.Issue.Link}}" class="tw-align-middle ref-issue">{{if not .LatestPullRequest.IsSameRepo}}{{.LatestPullRequest.BaseRepo.FullName}}{{end}}#{{.LatestPullRequest.Issue.Index}}</a> 138 {{if .LatestPullRequest.HasMerged}} 139 <a href="{{.LatestPullRequest.Issue.Link}}" class="ui purple large label">{{svg "octicon-git-merge" 16 "tw-mr-1"}}{{ctx.Locale.Tr "repo.pulls.merged"}}</a> 140 {{else if .LatestPullRequest.Issue.IsClosed}} 141 <a href="{{.LatestPullRequest.Issue.Link}}" class="ui red large label">{{svg "octicon-git-pull-request" 16 "tw-mr-1"}}{{ctx.Locale.Tr "repo.issues.closed_title"}}</a> 142 {{else}} 143 <a href="{{.LatestPullRequest.Issue.Link}}" class="ui green large label">{{svg "octicon-git-pull-request" 16 "tw-mr-1"}}{{ctx.Locale.Tr "repo.issues.open_title"}}</a> 144 {{end}} 145 {{end}} 146 </td> 147 <td class="three wide right aligned overflow-visible"> 148 {{if and $.IsWriter (not $.Repository.IsArchived) (not .DBBranch.IsDeleted)}} 149 <button class="btn interact-bg tw-p-2 show-modal show-create-branch-modal" 150 data-branch-from="{{.DBBranch.Name}}" 151 data-branch-from-urlcomponent="{{PathEscapeSegments .DBBranch.Name}}" 152 data-tooltip-content="{{ctx.Locale.Tr "repo.branch.new_branch_from" .DBBranch.Name}}" 153 data-modal="#create-branch-modal" data-name="{{.DBBranch.Name}}" 154 > 155 {{svg "octicon-git-branch"}} 156 </button> 157 {{end}} 158 {{if $.EnableFeed}} 159 <a role="button" class="btn interact-bg tw-p-2" href="{{$.FeedURL}}/rss/branch/{{PathEscapeSegments .DBBranch.Name}}">{{svg "octicon-rss"}}</a> 160 {{end}} 161 {{if and (not .DBBranch.IsDeleted) (not $.DisableDownloadSourceArchives)}} 162 <div class="ui dropdown btn interact-bg tw-p-2" data-tooltip-content="{{ctx.Locale.Tr "repo.branch.download" (.DBBranch.Name)}}"> 163 {{svg "octicon-download"}} 164 <div class="menu"> 165 <a class="item archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments .DBBranch.Name}}.zip" rel="nofollow">{{svg "octicon-file-zip"}} ZIP</a> 166 <a class="item archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments .DBBranch.Name}}.tar.gz" rel="nofollow">{{svg "octicon-file-zip"}} TAR.GZ</a> 167 </div> 168 </div> 169 {{end}} 170 {{if and $.IsWriter (not $.Repository.IsArchived) (not .DBBranch.IsDeleted) (not $.IsMirror)}} 171 <button class="btn interact-bg tw-p-2 show-modal show-rename-branch-modal" 172 data-is-default-branch="false" 173 data-old-branch-name="{{.DBBranch.Name}}" 174 data-modal="#rename-branch-modal" 175 data-tooltip-content="{{ctx.Locale.Tr "repo.branch.rename" (.DBBranch.Name)}}" 176 > 177 {{svg "octicon-pencil"}} 178 </button> 179 {{end}} 180 {{if and $.IsWriter (not $.IsMirror) (not $.Repository.IsArchived) (not .IsProtected)}} 181 {{if .DBBranch.IsDeleted}} 182 <button class="btn interact-bg tw-p-2 link-action restore-branch-button" data-url="{{$.Link}}/restore?branch_id={{.DBBranch.ID}}&name={{.DBBranch.Name}}&page={{$.Page.Paginater.Current}}" data-tooltip-content="{{ctx.Locale.Tr "repo.branch.restore" (.DBBranch.Name)}}"> 183 <span class="text blue"> 184 {{svg "octicon-reply"}} 185 </span> 186 </button> 187 {{else}} 188 <button class="btn interact-bg tw-p-2 delete-button delete-branch-button" data-url="{{$.Link}}/delete?name={{.DBBranch.Name}}&page={{$.Page.Paginater.Current}}" data-tooltip-content="{{ctx.Locale.Tr "repo.branch.delete" (.DBBranch.Name)}}" data-name="{{.DBBranch.Name}}"> 189 {{svg "octicon-trash"}} 190 </button> 191 {{end}} 192 {{end}} 193 </td> 194 </tr> 195 {{end}} 196 </tbody> 197 </table> 198 </div> 199 {{template "base/paginate" .}} 200 </div> 201 </div> 202 203 <div class="ui g-modal-confirm delete modal"> 204 <div class="header"> 205 {{svg "octicon-trash"}} 206 {{ctx.Locale.Tr "repo.branch.delete_html"}} <span class="name"></span> 207 </div> 208 <div class="content"> 209 <p>{{ctx.Locale.Tr "repo.branch.delete_desc"}}</p> 210 </div> 211 {{template "base/modal_actions_confirm" .}} 212 </div> 213 214 <div class="ui mini modal" id="create-branch-modal"> 215 <div class="header"> 216 {{ctx.Locale.Tr "repo.branch.new_branch"}} 217 </div> 218 219 <form class="ui form" id="create-branch-form" action="" data-base-action="{{.Link}}/_new/branch/" method="post"> 220 <div class="content"> 221 {{.CsrfTokenHtml}} 222 <div class="field"> 223 {{ctx.Locale.Tr "repo.branch.create_new_branch"}} 224 <span id="modal-create-branch-from-span"></span> 225 </div> 226 <div class="required field"> 227 <label for="new_branch_name">{{ctx.Locale.Tr "repo.branch.name"}}</label> 228 <input id="new_branch_name" name="new_branch_name" required> 229 </div> 230 </div> 231 {{template "base/modal_actions_confirm" (dict "ModalButtonTypes" "confirm")}} 232 </form> 233 </div> 234 235 <div class="ui mini modal" id="rename-branch-modal"> 236 <div class="header"> 237 {{ctx.Locale.Tr "repo.settings.rename_branch"}} 238 </div> 239 <form class="ui form" action="{{$.Repository.Link}}/branches/rename" method="post"> 240 <div class="content"> 241 {{.CsrfTokenHtml}} 242 <div class="field default-branch-warning"> 243 <span class="text red">{{ctx.Locale.Tr "repo.branch.warning_rename_default_branch"}}</span> 244 </div> 245 <div class="field"> 246 <span class="text" data-rename-branch-to="{{ctx.Locale.Tr "repo.branch.rename_branch_to"}}"></span> 247 </div> 248 <input name="from" type="hidden" required> 249 <div class="required field"> 250 <input name="to" required> 251 </div> 252 </div> 253 {{template "base/modal_actions_confirm" (dict "ModalButtonTypes" "confirm")}} 254 </form> 255 </div> 256 {{template "base/footer" .}}