Просмотр исходного кода

Merge pull request #86 from zricethezav/patch-err-check

Patch err check
Zachary Rice 7 лет назад
Родитель
Сommit
f3a8359ac0
2 измененных файлов с 16 добавлено и 3 удалено
  1. 4 0
      CHANGELOG.md
  2. 12 3
      main.go

+ 4 - 0
CHANGELOG.md

@@ -1,6 +1,10 @@
 CHANGELOG
 =========
 
+1.2.1
+-----
+- Check errors when generating commit patch
+
 1.2.0
 -----
 - Added support for providing an alternate GitHub URL to support scanning GitHub Enteprise repositories

+ 12 - 3
main.go

@@ -276,8 +276,8 @@ func getRepo() (Repo, error) {
 		r   *git.Repository
 	)
 
-	log.Infof("cloning %s", opts.Repo)
 	if opts.Disk {
+		log.Infof("cloning %s", opts.Repo)
 		cloneTarget := fmt.Sprintf("%s/%x", dir, md5.Sum([]byte(fmt.Sprintf("%s%s", opts.GithubUser, opts.Repo))))
 		if opts.IncludePrivate {
 			r, err = git.PlainClone(cloneTarget, false, &git.CloneOptions{
@@ -293,8 +293,10 @@ func getRepo() (Repo, error) {
 		}
 	} else if opts.RepoPath != "" {
 		// use existing repo
+		log.Infof("opening %s", opts.Repo)
 		r, err = git.PlainOpen(opts.RepoPath)
 	} else {
+		log.Infof("cloning %s", opts.Repo)
 		if opts.IncludePrivate {
 			r, err = git.Clone(memory.NewStorage(), nil, &git.CloneOptions{
 				URL:      opts.Repo,
@@ -351,7 +353,6 @@ func auditRef(r *git.Repository, ref *plumbing.Reference, commitWg *sync.WaitGro
 		if prevCommit == nil {
 			prevCommit = c
 		}
-
 		commitWg.Add(1)
 		go func(c *object.Commit, prevCommit *object.Commit) {
 			var (
@@ -359,7 +360,15 @@ func auditRef(r *git.Repository, ref *plumbing.Reference, commitWg *sync.WaitGro
 				filePath string
 				skipFile bool
 			)
-			patch, _ := c.Patch(prevCommit)
+			patch, err := c.Patch(prevCommit)
+			if err != nil {
+				log.Warnf("problem generating patch for commit: %s\n", c.Hash.String())
+				if limitGoRoutines {
+					<-semaphore
+				}
+				commitChan <- leaks
+				return
+			}
 			for _, f := range patch.FilePatches() {
 				skipFile = false
 				from, to := f.Files()