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)
+ }
}
}