Sign in

Search issue titles and bodies, change requests and comments. Private repositories you cannot read are not included.

vole
Clone

Read only, no credentials:

https://rodent.software/git/vole.git

Write over SSH with a registered key:

git clone ssh://git@0.0.0.0: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/codebrowser.go +5−11

@@ -31,9 +31,6 @@ type codeView struct {
31 31 Name string
32 32 Ref string
33 33 Commit string
34 CloneURL string
35 SSHURL string
36 Site string
37 34 Count int
38 35 Branches []string
39 36 Latest []git.Commit
@@ -106,14 +103,11 @@ func (w *Web) Code(rw http.ResponseWriter, r *http.Request) {
106 103 func (w *Web) codeShell(r *http.Request, m *repo.Meta, ref, commit, active string, full bool) codeView {
107 104 g := m.Git()
108 105 v := codeView{
109 Page: w.page(r, m.Name+" · code"),
110 Name: m.Name,
111 Ref: ref,
112 Commit: commit,
113 CloneURL: w.cloneURL(r, m.Name),
114 SSHURL: sshURL(w.Cfg.SSHAddr, m.Name),
115 }
116 v.Site = w.siteURL(r, m.Name)
106 Page: w.page(r, m.Name+" · code"),
107 Name: m.Name,
108 Ref: ref,
109 Commit: commit,
110 }
117 111 if !full {
118 112 return v
119 113 }