|
|
@ -1,10 +1,11 @@
|
|
1
|
1
|
package main
|
|
2
|
2
|
|
|
3
|
3
|
import (
|
|
4
|
|
"fmt"
|
|
|
4
|
"bytes"
|
|
5
|
5
|
"html/template"
|
|
|
6
|
"io"
|
|
6
|
7
|
"log"
|
|
7
|
|
"os"
|
|
|
8
|
"net/http"
|
|
8
|
9
|
"strings"
|
|
9
|
10
|
"time"
|
|
10
|
11
|
|
|
|
@ -17,44 +18,21 @@ func main() {
|
|
17
|
18
|
log.Fatal("opening repository: ", err)
|
|
18
|
19
|
}
|
|
19
|
20
|
|
|
20
|
|
head, err := repo.Head()
|
|
21
|
|
if err != nil {
|
|
22
|
|
log.Fatal("getting HEAD: ", err)
|
|
23
|
|
}
|
|
24
|
|
|
|
25
|
|
commit, err := repo.LookupCommit(head.Target())
|
|
26
|
|
if err != nil {
|
|
27
|
|
log.Fatal("resolving HEAD: ", err)
|
|
28
|
|
}
|
|
29
|
|
|
|
30
|
|
fmt.Printf("Commit: %s\nAuthor: %s\nDate: %s\n\n%s", commit.TreeId(), commit.Author().Name, commit.Author().When, commit.Message())
|
|
31
|
|
|
|
32
|
|
tree, err := commit.Tree()
|
|
33
|
|
if err != nil {
|
|
34
|
|
log.Fatal("getting tree: ", err)
|
|
35
|
|
}
|
|
36
|
|
|
|
37
|
|
err = tree.Walk(func(name string, entry *git.TreeEntry) int {
|
|
38
|
|
obj, err := repo.Lookup(entry.Id)
|
|
|
21
|
http.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
|
|
|
22
|
buf := new(bytes.Buffer)
|
|
|
23
|
err = repoTmpl.Execute(buf, map[string]interface{}{
|
|
|
24
|
"RepoPath": "~/t/libgit2",
|
|
|
25
|
"Repo": NewFancyRepo(repo),
|
|
|
26
|
})
|
|
39
|
27
|
if err != nil {
|
|
40
|
|
log.Fatal("lookup: ", err)
|
|
|
28
|
log.Println("rendering repo: ", err)
|
|
|
29
|
http.Error(w, "internal server error", http.StatusInternalServerError)
|
|
|
30
|
return
|
|
41
|
31
|
}
|
|
42
|
|
fmt.Printf("%s (%s)\n", entry.Name, obj.Type())
|
|
43
|
|
return 1
|
|
|
32
|
io.Copy(w, buf)
|
|
44
|
33
|
})
|
|
45
|
|
if err != nil {
|
|
46
|
|
log.Fatal("walking tree: ", err)
|
|
47
|
|
}
|
|
48
|
34
|
|
|
49
|
|
fmt.Printf("\n\n\n")
|
|
50
|
|
|
|
51
|
|
err = repoTmpl.Execute(os.Stdout, map[string]interface{}{
|
|
52
|
|
"RepoPath": "~/t/libgit2",
|
|
53
|
|
"Repo": NewFancyRepo(repo),
|
|
54
|
|
})
|
|
55
|
|
if err != nil {
|
|
56
|
|
log.Fatal("rendering repo: ", err)
|
|
57
|
|
}
|
|
|
35
|
log.Fatal(http.ListenAndServe("localhost:12345", nil))
|
|
58
|
36
|
}
|
|
59
|
37
|
|
|
60
|
38
|
type FancyRepo struct {
|