浏览代码

Add TravisCI config

Vadim Markovtsev 8 年之前
父节点
当前提交
4d3f9500c2
共有 3 个文件被更改,包括 32 次插入17 次删除
  1. 12 0
      .travis.yml
  2. 15 13
      analyser.go
  3. 5 4
      cmd/hercules/main.go

+ 12 - 0
.travis.yml

@@ -0,0 +1,12 @@
+language: go
+
+go:
+  - 1.7
+
+go_import_path: gopkg.in/src-d/hercules.v1
+  
+script:
+  - go test -v -cpu=1,2 ./...
+
+notifications:
+  email: false

+ 15 - 13
analyser.go

@@ -12,6 +12,8 @@ import (
 
 	"github.com/sergi/go-diff/diffmatchpatch"
 	"gopkg.in/src-d/go-git.v4"
+	"gopkg.in/src-d/go-git.v4/plumbing/difftree"
+	"gopkg.in/src-d/go-git.v4/plumbing/object"
 )
 
 type Analyser struct {
@@ -27,7 +29,7 @@ func checkClose(c io.Closer) {
 	}
 }
 
-func loc(file *git.Blob) (int, error) {
+func loc(file *object.Blob) (int, error) {
 	reader, err := file.Reader()
 	if err != nil {
 		panic(err)
@@ -44,7 +46,7 @@ func loc(file *git.Blob) (int, error) {
 	return counter, nil
 }
 
-func str(file *git.Blob) string {
+func str(file *object.Blob) string {
 	reader, err := file.Reader()
 	if err != nil {
 		panic(err)
@@ -56,7 +58,7 @@ func str(file *git.Blob) string {
 }
 
 func (analyser *Analyser) handleInsertion(
-	change *git.Change, day int, status map[int]int64, files map[string]*File) {
+	change *difftree.Change, day int, status map[int]int64, files map[string]*File) {
 	blob, err := analyser.Repository.Blob(change.To.TreeEntry.Hash)
 	if err != nil {
 		panic(err)
@@ -75,7 +77,7 @@ func (analyser *Analyser) handleInsertion(
 }
 
 func (analyser *Analyser) handleDeletion(
-	change *git.Change, day int, status map[int]int64, files map[string]*File) {
+	change *difftree.Change, day int, status map[int]int64, files map[string]*File) {
 	blob, err := analyser.Repository.Blob(change.From.TreeEntry.Hash)
 	if err != nil {
 		panic(err)
@@ -91,7 +93,7 @@ func (analyser *Analyser) handleDeletion(
 }
 
 func (analyser *Analyser) handleModification(
-	change *git.Change, day int, status map[int]int64, files map[string]*File) {
+	change *difftree.Change, day int, status map[int]int64, files map[string]*File) {
 	blob_from, err := analyser.Repository.Blob(change.From.TreeEntry.Hash)
 	if err != nil {
 		panic(err)
@@ -167,8 +169,8 @@ func (analyser *Analyser) handleRename(from, to string, files map[string]*File)
 	delete(files, from)
 }
 
-func (analyser *Analyser) Commits() []*git.Commit {
-	result := []*git.Commit{}
+func (analyser *Analyser) Commits() []*object.Commit {
+	result := []*object.Commit{}
 	repository := analyser.Repository
 	head, err := repository.Head()
 	if err != nil {
@@ -217,7 +219,7 @@ func (analyser *Analyser) groupStatus(status map[int]int64, day int) []int64 {
 	return result
 }
 
-func (analyser *Analyser) Analyse(commits []*git.Commit) [][]int64 {
+func (analyser *Analyser) Analyse(commits []*object.Commit) [][]int64 {
 	sampling := analyser.Sampling
 	if sampling == 0 {
 		sampling = 1
@@ -236,7 +238,7 @@ func (analyser *Analyser) Analyse(commits []*git.Commit) [][]int64 {
 	files := map[string]*File{}
 
 	var day0 time.Time // will be initialized in the first iteration
-	var prev_tree *git.Tree = nil
+	var prev_tree *object.Tree = nil
 	prev_day := 0
 
 	for index, commit := range commits {
@@ -275,17 +277,17 @@ func (analyser *Analyser) Analyse(commits []*git.Commit) [][]int64 {
 					statuses = append(statuses, gs)
 				}
 			}
-			tree_diff, err := git.DiffTree(prev_tree, tree)
+			tree_diff, err := difftree.DiffTree(prev_tree, tree)
 			if err != nil {
 				panic(err)
 			}
 			for _, change := range tree_diff {
 				switch change.Action {
-				case git.Insert:
+				case difftree.Insert:
 					analyser.handleInsertion(change, day, status, files)
-				case git.Delete:
+				case difftree.Delete:
 					analyser.handleDeletion(change, day, status, files)
-				case git.Modify:
+				case difftree.Modify:
 					func() {
 						defer func() {
 							r := recover()

+ 5 - 4
cmd/hercules/main.go

@@ -12,10 +12,11 @@ import (
 
 	"gopkg.in/src-d/go-git.v4"
 	"gopkg.in/src-d/go-git.v4/plumbing"
+	"gopkg.in/src-d/go-git.v4/plumbing/object"
 	"gopkg.in/src-d/hercules.v1"
 )
 
-func loadCommitsFromFile(path string, repositry *git.Repository) []*git.Commit {
+func loadCommitsFromFile(path string, repository *git.Repository) []*object.Commit {
 	var file io.Reader
 	if path != "-" {
 		file, err := os.Open(path)
@@ -27,13 +28,13 @@ func loadCommitsFromFile(path string, repositry *git.Repository) []*git.Commit {
 		file = os.Stdin
 	}
 	scanner := bufio.NewScanner(file)
-	commits := []*git.Commit{}
+	commits := []*object.Commit{}
 	for scanner.Scan() {
 		hash := plumbing.NewHash(scanner.Text())
 		if len(hash) != 20 {
 			panic("invalid commit hash " + scanner.Text())
 		}
-		commit, err := repositry.Commit(hash)
+		commit, err := repository.Commit(hash)
 		if err != nil {
 			panic(err)
 		}
@@ -108,7 +109,7 @@ func main() {
 	}
 	// list of commits belonging to the default branch, from oldest to newest
 	// rev-list --first-parent
-	var commits []*git.Commit
+	var commits []*object.Commit
 	if commitsFile == "" {
 		commits = analyser.Commits()
 	} else {