caddy-git-server
Caddy module that provides a git server.
package gitserver
import (
"github.com/caddyserver/caddy/v2/modules/caddyhttp"
"github.com/go-git/go-git/v5/plumbing/object"
)
type GitBrowserDiff struct {
Diff string
}
func (gb *GitBrowser) browseDiff() error {
pageData := new(GitBrowserDiff)
commit1, err := gb.Repo.CommitObject(*gb.RefHash)
if err != nil {
return caddyhttp.Error(503, err)
}
println("commit1")
commit2, err := commit1.Parent(0)
if err != nil {
return caddyhttp.Error(503, err)
}
println("commit2")
tree1, err := commit1.Tree()
if err != nil {
return caddyhttp.Error(503, err)
}
println("tree1")
tree2, err := commit2.Tree()
if err != nil {
return caddyhttp.Error(503, err)
}
println("tree2")
changes, err := object.DiffTree(tree1, tree2)
if err != nil {
return caddyhttp.Error(503, err)
}
patch, err := changes.Patch()
if err != nil {
return caddyhttp.Error(503, err)
}
// println("Diff:", patch.String())
pageData.Diff = patch.String()
gb.PageData = pageData
return nil
}