gitshow

Log | Files | Refs

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 }