De-dupe packages during scan.
diff --git a/dependency/resolver.go b/dependency/resolver.go index 4c2fa13..545ff8c 100644 --- a/dependency/resolver.go +++ b/dependency/resolver.go
@@ -288,6 +288,8 @@ for e := queue.Front(); e != nil; e = e.Next() { dep := e.Value.(string) + r.alreadyQ[dep] = true + // Skip ignored packages t := strings.TrimPrefix(dep, r.VendorDir+string(os.PathSeparator)) if r.Config.HasIgnore(t) { @@ -312,7 +314,10 @@ switch pi.Loc { case LocVendor: msg.Info("Already vendored: %s", imp) - queue.PushBack(imp) + if _, ok := r.alreadyQ[imp]; !ok { + r.alreadyQ[imp] = true + queue.PushBack(imp) + } case LocUnknown: msg.Info("Not found: %s (2)", imp) // FIXME: respond to NotFound @@ -321,7 +326,10 @@ msg.Info("Found on GOPATH, not vendor: %s", imp) // FIXME: respond to NotFound r.Handler.OnGopath(imp) - queue.PushBack(imp) + if _, ok := r.alreadyQ[imp]; !ok { + r.alreadyQ[imp] = true + queue.PushBack(imp) + } } }