commit.go (2943B)
1 package main 2 3 import ( 4 // "github.com/gorilla/mux" 5 // "github.com/libgit2/git2go/v31" 6 // "log" 7 "net/http" 8 // "path/filepath" 9 // "strings" 10 ) 11 12 type DeltaAction int 13 14 const ( 15 DeltaActionCreated DeltaAction = iota 16 DeltaActionChanged 17 DeltaActionDeleted 18 DeltaActionMoved 19 ) 20 21 type DeltaData struct { 22 NewFile string 23 OldFile string 24 Action DeltaAction 25 } 26 27 type CommitPageData struct { 28 Name string 29 Deltas []DeltaData 30 } 31 32 func getCommit(w http.ResponseWriter, r *http.Request) { 33 // logger := log.Default() 34 // vars := mux.Vars(r) 35 // reponame := vars["repository"] 36 // 37 // repo, err := checkRepo(reponame) 38 // if err != nil { 39 // w.WriteHeader(http.StatusNotFound) 40 // return 41 // } 42 // defer repo.Free() 43 // 44 // obj, err := repo.RevparseSingle(vars["hash"]) 45 // if err != nil { 46 // logger.Printf("Object not found: %s", vars["hash"]) 47 // w.WriteHeader(http.StatusNotFound) 48 // return 49 // } 50 // defer obj.Free() 51 // 52 // commit, err := obj.AsCommit() 53 // if err != nil { 54 // w.WriteHeader(http.StatusNotFound) 55 // return 56 // } 57 // defer commit.Free() 58 // 59 // if commit.ParentCount() != 1 { 60 // w.WriteHeader(http.StatusInternalServerError) 61 // logger.Print("TODO: initial commit and merge commit") 62 // return 63 // } 64 // 65 // ctree, err := commit.Tree() 66 // if err != nil { 67 // logger.Fatal(err) 68 // } 69 // defer ctree.Free() 70 // 71 // parent := commit.Parent(0) 72 // defer parent.Free() 73 // 74 // ptree, err := parent.Tree() 75 // if err != nil { 76 // logger.Fatal(err) 77 // } 78 // defer ptree.Free() 79 // 80 // parentid, err := parent.ShortId() 81 // if err != nil { 82 // logger.Fatal(err) 83 // } 84 // 85 // commitid, err := parent.ShortId() 86 // if err != nil { 87 // logger.Fatal(err) 88 // } 89 // 90 // diff, err := repo.DiffTreeToTree(ptree, ctree, &git.DiffOptions{ 91 // Flags: git.DiffIgnoreWhitespaceChange, 92 // MaxSize: 2000, 93 // ContextLines: 5, 94 // OldPrefix: parentid, 95 // NewPrefix: commitid, 96 // }) 97 // if err != nil { 98 // logger.Fatal(err) 99 // } 100 // defer diff.Free() 101 // 102 // deltadatas := make([]DeltaData, 0) 103 // 104 // diff.ForEach(func(delta git.DiffDelta, progress float64) (git.DiffForEachHunkCallback, error) { 105 // deltadata := DeltaData { 106 // NewFile: delta.NewFile.Path, 107 // OldFile: delta.OldFile.Path, 108 // } 109 // 110 // if delta.OldFile.Oid.IsZero() { 111 // deltadata.Action = DeltaActionCreated 112 // } else if delta.NewFile.Oid.IsZero() { 113 // deltadata.Action = DeltaActionDeleted 114 // } else if delta.NewFile.Path == delta.OldFile.Path { 115 // deltadata.Action = DeltaActionChanged 116 // } else { 117 // deltadata.Action = DeltaActionMoved 118 // } 119 // 120 // deltadatas = append(deltadatas, deltadata) 121 // 122 // logger.Print("Delta", deltadata) 123 // return func(hunk git.DiffHunk) (git.DiffForEachLineCallback, error) { 124 // logger.Print("Hunk", hunk.Header) 125 // return func(line git.DiffLine) error { 126 // logger.Print("Line", line) 127 // return nil 128 // }, nil 129 // }, nil 130 // }, git.DiffDetailHunks) 131 }