// <-- go back to projects
git clone https://blmayer.dev/x/gwi zip
Browsing mainGWI stands for Git Web Interface, that is it delivers a ready to use visualization and management tool atop of your git repositories.
With GWI you can easily host your own git platform customized to your needs. Some features are:
This project is in early stages of development, and some features may be missing. If you want to request a feature or report a bug, follow the instructions at the author’s git.
If you like to star it on GitHub, we have a mirror repo there: GitHub
Thank you!
The simplest way of using this project is the following example:
package main
import (
"net/http"
"blmayer.dev/gwi"
)
func main() {
// init user vault
v, err := NewFileVault("users.json", "--salt--")
// handle error
// gwi config struct
c := gwi.Config{
Root: "path/to/git/folder",
PagesRoot: "path/to/html-templates",
...
}
g, _ := gwi.NewFromConfig(c, v)
// handle error
err := http.ListenAndServe(":8080", g.Handle())
// handle err
}
To get a list of your users is simple:
<ul>
{{range users}}
<li>{{.}}</li>
{{end}}
</ul>
To get the file tree for the current reference:
<table>
<tr>
<th>Mode</th>
<th>Size</th>
<th>Name</th>
</tr>
{{range tree .Ref}}
<tr>
<td>{{.Mode}}</td>
<td>{{.Size}}</td>
<td>{{.Name}}</td>
</tr>
{{end}}
</table>
Will print a nice list of your project files.
Using the functions commits
and commit
you’re able to see a list of
commits and check details of each one:
<table>
<tr>
<th>Time</th>
<th>Author</th>
<th>Message</th>
</tr>
{{range commits .Ref}}
<tr>
<td>{{.Author.When.String}}</td>
<td>{{.Author.Name}}</td>
<td>{{.Message}}</td>
</tr>
{{end}}
</table>
To get the list, and the following show a commit’s details:
{{with commit .Ref}}
<p><b>Commited at:</b> {{.Committer.When.String}}</p>
<p><b>Author:</b> {{.Committer.Name}} ({{.Committer.Email}})</p>
<p><b>Message:</b></p>
<p>{{.Message}}</p>
{{end}}
gwi Copyright (C) 2022 Brian Mayer (me@blmayer.dev) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.