vole
Clone
Read only, no credentials:
https://rodent.software/vole.git
Write over SSH with a registered key:
git clone ssh://git@rodent.software:2222/vole.git
A free and open-source forge that lives in your Git repo.
| 1 | {{define "overview"}} |
| 2 | {{template "header" .}} |
| 3 | {{template "repohead" (nav .Page "overview")}} |
| 4 | |
| 5 | <div class="page-head"> |
| 6 | <div class="page-head-main"> |
| 7 | <h1>Overview</h1> |
| 8 | <p class="page-sub">README, recent work, releases, and contributors · default branch <code>{{.Ref}}</code></p> |
| 9 | </div> |
| 10 | <div class="page-head-actions"> |
| 11 | <a class="button" href="/{{.Name}}/code">{{icon "code"}}Browse code</a> |
| 12 | </div> |
| 13 | </div> |
| 14 | |
| 15 | <div class="overview"> |
| 16 | <div class="overview-main"> |
| 17 | {{if .Readme}} |
| 18 | <div class="filehead"> |
| 19 | <span>{{.ReadmeName}}</span> |
| 20 | <a href="/{{.Name}}/blob/{{esc .Ref}}/{{.ReadmeName}}">view source</a> |
| 21 | </div> |
| 22 | <article class="md readme">{{.Readme}}</article> |
| 23 | {{else if not .Commit}} |
| 24 | <div class="card"> |
| 25 | <h2>Empty repository</h2> |
| 26 | <p class="muted">Nothing has been pushed yet. Add this repository and push a branch:</p> |
| 27 | <pre>git remote add origin {{.SSHURL}} |
| 28 | git push -u origin {{.Ref}}</pre> |
| 29 | </div> |
| 30 | {{end}} |
| 31 | </div> |
| 32 | |
| 33 | <aside class="overview-side"> |
| 34 | <section> |
| 35 | <h2 class="with-more"><span>{{icon "git-commit-horizontal"}}Recent commits</span> <a class="more" href="/{{.Name}}/commits/{{esc .Ref}}">all</a></h2> |
| 36 | {{if .Commits}} |
| 37 | <div class="side-list"> |
| 38 | {{range .Commits}} |
| 39 | <a class="side-commit" href="/{{$.Name}}/commit/{{.SHA}}"> |
| 40 | <span class="side-subject">{{.Subject}}</span> |
| 41 | <span class="side-meta"><span class="sha">{{short .SHA}}</span><span>{{since .When}}</span></span> |
| 42 | </a> |
| 43 | {{end}} |
| 44 | </div> |
| 45 | {{else}} |
| 46 | <p class="muted">No commits yet.</p> |
| 47 | {{end}} |
| 48 | </section> |
| 49 | |
| 50 | <section> |
| 51 | <h2 class="with-more"><span>{{icon "circle-dot"}}Recent issues</span> <a class="more" href="/{{.Name}}/issues">all</a></h2> |
| 52 | {{if .RecentIssues}} |
| 53 | <div class="side-list"> |
| 54 | {{range .RecentIssues}} |
| 55 | <a class="side-issue" href="/{{$.Name}}/issues/{{.ID}}"> |
| 56 | <span class="side-subject"><span class="side-num">{{num .Number}}</span>{{.Title}}</span> |
| 57 | <span class="side-meta">{{who .Author}}<span>{{since .Created.Unix}}</span></span> |
| 58 | </a> |
| 59 | {{end}} |
| 60 | </div> |
| 61 | {{else}} |
| 62 | <p class="muted">No open issues.</p> |
| 63 | {{end}} |
| 64 | </section> |
| 65 | |
| 66 | <section> |
| 67 | <h2 class="with-more"><span>{{icon "git-pull-request"}}Recent changes</span> <a class="more" href="/{{.Name}}/changes">all</a></h2> |
| 68 | {{if .RecentRequests}} |
| 69 | <div class="side-list"> |
| 70 | {{range .RecentRequests}} |
| 71 | <a class="side-change" href="/{{$.Name}}/changes/{{.ID}}"> |
| 72 | <span class="side-subject"><span class="side-num">{{num .Number}}</span>{{.Title}}</span> |
| 73 | <span class="side-meta">{{who .Author}}<span>{{since .Created.Unix}}</span></span> |
| 74 | </a> |
| 75 | {{end}} |
| 76 | </div> |
| 77 | {{else}} |
| 78 | <p class="muted">No open changes.</p> |
| 79 | {{end}} |
| 80 | </section> |
| 81 | |
| 82 | <section> |
| 83 | <h2 class="with-more"><span>{{icon "play"}}Recent runs</span> <a class="more" href="/{{.Name}}/runs">all</a></h2> |
| 84 | {{if .Runs}} |
| 85 | <div class="side-list"> |
| 86 | {{range .Runs}} |
| 87 | <a class="side-run" href="/{{$.Name}}/runs/{{.ID}}"> |
| 88 | <span class="side-run-top"> |
| 89 | <span class="status {{.Status}}">{{.Status}}</span> |
| 90 | <span class="side-subject">{{.JobTitle}}</span> |
| 91 | </span> |
| 92 | <span class="side-meta">{{if .Tag}}tag {{.Tag}}{{else}}{{.Branch}}{{end}}<span>{{if not .Started.IsZero}}{{duration .Duration}}{{else}}{{duration .Wait}} queued{{end}}</span><span>{{since .Created.Unix}}</span></span> |
| 93 | </a> |
| 94 | {{end}} |
| 95 | </div> |
| 96 | {{else}} |
| 97 | <p class="muted">No runs yet.</p> |
| 98 | {{end}} |
| 99 | </section> |
| 100 | |
| 101 | <section> |
| 102 | <h2>{{icon "tag"}}Releases</h2> |
| 103 | {{if .Tags}} |
| 104 | <div class="side-list"> |
| 105 | {{range .Tags}} |
| 106 | <div class="side-row"> |
| 107 | <a href="/{{$.Name}}/releases/{{.Name}}">{{.Name}}</a> |
| 108 | <span class="muted">{{since .When}}{{if not .Annotated}} · lightweight{{end}}</span> |
| 109 | </div> |
| 110 | {{end}} |
| 111 | </div> |
| 112 | {{else}} |
| 113 | <p class="muted">No releases yet. A release is an annotated tag.</p> |
| 114 | {{end}} |
| 115 | </section> |
| 116 | |
| 117 | <section id="contributors"> |
| 118 | <h2>{{icon "users"}}Contributors</h2> |
| 119 | {{if .Contributors}} |
| 120 | <ul class="contributors"> |
| 121 | {{range .Contributors}} |
| 122 | <li> |
| 123 | <span class="cname">{{template "userlink" (user .Name)}}{{if .Bot}} <span class="state">bot</span>{{end}}</span> |
| 124 | <span class="contributor-stats"> |
| 125 | {{range .Stats}}<span class="contrib-stat" tabindex="0" role="img" aria-label="{{.Label}}" data-tip="{{.Label}}">{{icon .Icon}}{{.Count}}</span>{{end}} |
| 126 | </span> |
| 127 | </li> |
| 128 | {{end}} |
| 129 | </ul> |
| 130 | {{else}} |
| 131 | <p class="muted">No contributions yet.</p> |
| 132 | {{end}} |
| 133 | </section> |
| 134 | |
| 135 | {{if .Languages}} |
| 136 | <section> |
| 137 | <h2>{{icon "code"}}Languages</h2> |
| 138 | {{range .Languages}} |
| 139 | <div class="lang"> |
| 140 | <span>{{.Name}}</span> |
| 141 | <span class="muted">{{.Percent}}%</span> |
| 142 | <progress class="bar" max="100" value="{{.Percent}}">{{.Percent}}%</progress> |
| 143 | </div> |
| 144 | {{end}} |
| 145 | </section> |
| 146 | {{end}} |
| 147 | |
| 148 | </aside> |
| 149 | </div> |
| 150 | {{template "footer" .}} |
| 151 | {{end}} |
| 152 |