Merge pull request #315 from Masterminds/dont-dup-update

Track updated packages to avoid dup work
diff --git a/action/get.go b/action/get.go
index 22e0652..b1c0a46 100644
--- a/action/get.go
+++ b/action/get.go
@@ -26,8 +26,11 @@
 	}
 
 	// Add the packages to the config.
-	if err := addPkgsToConfig(conf, names, insecure); err != nil {
+	if count, err := addPkgsToConfig(conf, names, insecure); err != nil {
 		msg.Die("Failed to get new packages: %s", err)
+	} else if count == 0 {
+		msg.Warn("Nothing to do")
+		return
 	}
 
 	// Fetch the new packages. Can't resolve versions via installer.Update if
@@ -96,10 +99,11 @@
 // - separates repo from packages
 // - sets up insecure repo URLs where necessary
 // - generates a list of subpackages
-func addPkgsToConfig(conf *cfg.Config, names []string, insecure bool) error {
+func addPkgsToConfig(conf *cfg.Config, names []string, insecure bool) (int, error) {
 
 	msg.Info("Preparing to install %d package.", len(names))
 
+	numAdded := 0
 	for _, name := range names {
 		var version string
 		parts := strings.Split(name, "#")
@@ -110,7 +114,7 @@
 
 		root, subpkg := util.NormalizeName(name)
 		if len(root) == 0 {
-			return fmt.Errorf("Package name is required for %q.", name)
+			return 0, fmt.Errorf("Package name is required for %q.", name)
 		}
 
 		if conf.HasDependency(root) {
@@ -123,6 +127,7 @@
 				} else {
 					dep.Subpackages = append(dep.Subpackages, subpkg)
 					msg.Info("Adding sub-package %s to existing import %s", subpkg, root)
+					numAdded++
 				}
 			} else {
 				msg.Warn("Package %q is already in glide.yaml. Skipping", root)
@@ -160,6 +165,7 @@
 		}
 
 		conf.Imports = append(conf.Imports, dep)
+		numAdded++
 	}
-	return nil
+	return numAdded, nil
 }
diff --git a/dependency/resolver.go b/dependency/resolver.go
index 1d40cfa..6c00a41 100644
--- a/dependency/resolver.go
+++ b/dependency/resolver.go
@@ -460,7 +460,6 @@
 					} else {
 						msg.Warn("Error updating %s: %s", imp, err)
 					}
-					r.VersionHandler.SetVersion(imp)
 				}
 			case LocUnknown:
 				msg.Debug("Missing %s. Trying to resolve.", imp)
@@ -498,6 +497,12 @@
 		t := r.stripv(e.Value.(string))
 		root, sp := util.NormalizeName(t)
 
+		// Skip ignored packages
+		if r.Config.HasIgnore(e.Value.(string)) {
+			msg.Info("Ignoring: %s", e.Value.(string))
+			continue
+		}
+
 		// TODO(mattfarina): Need to eventually support devImport
 		existing := r.Config.Imports.Get(root)
 		if existing != nil {
diff --git a/repo/vcs.go b/repo/vcs.go
index 03267d8..989c38d 100644
--- a/repo/vcs.go
+++ b/repo/vcs.go
@@ -146,7 +146,7 @@
 				// branch it's a tag or commit id so we can skip
 				// performing an update.
 				if version == dep.Reference && !ib {
-					msg.Info("%s is already set to version %s. Skipping update.", dep.Name, dep.Reference)
+					msg.Debug("%s is already set to version %s. Skipping update.", dep.Name, dep.Reference)
 					return nil
 				}
 			}