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.
Move Clone and Site into the repository header
816cc543d34ab52df01c62cfd8878ae70327a21f · Keenan Nemetz · 11d ago · parent a196e404
Move Clone and Site into the repository header The repository header now carries the controls that act on the repository as a whole. Clone appears once beside the name on every tab, with a copy button for the HTTPS URL and one for the SSH command. Site joins it only when a site would answer: pages are enabled, the repository is public, and its pages branch exists. The per-tab Clone popovers and the Overview/Code Site buttons are gone, so a tab's page header holds only that tab's own actions. Copy feedback now restores innerHTML, keeping the icon on an icon-only button and surviving a repeated click.
server/web/templates/chrome.html +21−1
| @@ -69,7 +69,27 @@ | |||
| 69 | 69 | {{define "repohead"}} | |
| 70 | 70 | <div class="repohead"> | |
| 71 | 71 | <div class="repo-title"> | |
| 72 | <div class="repo-name"><span class="repo-vis" title="{{if .Private}}Private repository{{else}}Public repository{{end}}">{{if .Private}}{{icon "lock"}}{{else}}{{icon "globe"}}{{end}}</span>{{.Name}}</div> | ||
| 72 | <div class="repo-title-row"> | ||
| 73 | <div class="repo-name"><span class="repo-vis" title="{{if .Private}}Private repository{{else}}Public repository{{end}}">{{if .Private}}{{icon "lock"}}{{else}}{{icon "globe"}}{{end}}</span>{{.Name}}</div> | ||
| 74 | <div class="repo-title-actions"> | ||
| 75 | {{if .Site}}<a class="button secondary" href="{{.Site}}">{{icon "external-link"}}Site</a>{{end}} | ||
| 76 | <details class="clone"> | ||
| 77 | <summary>{{icon "copy"}}Clone</summary> | ||
| 78 | <div class="clone-pop"> | ||
| 79 | <p class="muted">Read only, no credentials:</p> | ||
| 80 | <div class="clone-field"> | ||
| 81 | <code>{{.CloneURL}}</code> | ||
| 82 | <button class="secondary" type="button" data-copy="{{.CloneURL}}" title="Copy HTTPS URL" aria-label="Copy HTTPS URL">{{icon "copy"}}</button> | ||
| 83 | </div> | ||
| 84 | <p class="muted">Write over SSH with a registered key:</p> | ||
| 85 | <div class="clone-field"> | ||
| 86 | <code>git clone {{.SSHURL}}</code> | ||
| 87 | <button class="secondary" type="button" data-copy="git clone {{.SSHURL}}" title="Copy SSH command" aria-label="Copy SSH command">{{icon "copy"}}</button> | ||
| 88 | </div> | ||
| 89 | </div> | ||
| 90 | </details> | ||
| 91 | </div> | ||
| 92 | </div> | ||
| 73 | 93 | {{if .Description}}<p class="repo-desc">{{.Description}}</p>{{end}} | |
| 74 | 94 | </div> | |
| 75 | 95 | <nav class="tabs" aria-label="Repository"> | |