diff --git a/cmd/get_imports.go b/cmd/get_imports.go
index a573aad..050a9d2 100644
--- a/cmd/get_imports.go
+++ b/cmd/get_imports.go
@@ -500,9 +500,30 @@
 			return err
 		}
 		_, err = v.DetectVcsFromFS(dest)
-		if empty == false && err == v.ErrCannotDetectVCS {
+		if updatingVendored == false && empty == false && err == v.ErrCannotDetectVCS {
 			Warn("%s appears to be a vendored package. Unable to update. Consider the '--update-vendored' flag.\n", dep.Name)
 		} else {
+
+			if updatingVendored == true && empty == false && err == v.ErrCannotDetectVCS {
+				// A vendored package, no repo, and updating the vendored packages
+				// has been opted into.
+				Info("%s is a vendored package. Updating.", dep.Name)
+				err = os.RemoveAll(dest)
+				if err != nil {
+					Error("Unable to update vendored dependency %s.\n", dep.Name)
+					return err
+				} else {
+					dep.UpdateAsVendored = true
+				}
+
+				if err = VcsGet(dep, dest, home, cache, cacheGopath, useGopath); err != nil {
+					Warn("Unable to checkout %s\n", dep.Name)
+					return err
+				}
+
+				return nil
+			}
+
 			repo, err := dep.GetRepo(dest)
 
 			// Tried to checkout a repo to a path that does not work. Either the
@@ -529,12 +550,10 @@
 				}
 			} else if err != nil {
 				return err
+			} else if repo.IsDirty() {
+				return fmt.Errorf("%s contains uncommited changes. Skipping update", dep.Name)
 			} else {
 
-				if repo.IsDirty() {
-					return fmt.Errorf("%s contains uncommited changes. Skipping update.", dep.Name)
-				}
-
 				// Check if the current version is a tag or commit id. If it is
 				// and that version is already checked out we can skip updating
 				// which is faster than going out to the Internet to perform
diff --git a/cmd/vendored.go b/cmd/vendored.go
index b0e3f64..5f1f87e 100644
--- a/cmd/vendored.go
+++ b/cmd/vendored.go
@@ -6,49 +6,21 @@
 
 	"github.com/Masterminds/cookoo"
 	"github.com/Masterminds/glide/cfg"
-	"github.com/Masterminds/vcs"
 )
 
+// If we are updating the vendored dependencies. That is those stored in the
+// local project VCS.
+var updatingVendored = false
+
 // VendoredSetup is a command that does the setup for vendored directories.
 // If enabled (via update) it marks vendored directories that are being updated
 // and removed the old code. This should be a prefix to UpdateImports and
 // VendoredCleanUp should be a suffix to UpdateImports.
 func VendoredSetup(c cookoo.Context, p *cookoo.Params) (interface{}, cookoo.Interrupt) {
-	update := p.Get("update", true).(bool)
+	update := p.Get("update", false).(bool)
 	conf := p.Get("conf", nil).(*cfg.Config)
-	if update != true {
-		return conf, nil
-	}
 
-	vend, err := VendorPath(c)
-	if err != nil {
-		return conf, err
-	}
-
-	for _, dep := range conf.Imports {
-		cwd := path.Join(vend, dep.Name)
-
-		// When the directory is not empty and has no VCS directory it's
-		// a vendored files situation.
-		empty, err := isDirectoryEmpty(cwd)
-		if err != nil {
-			Error("Error with the directory %s\n", cwd)
-			continue
-		}
-		_, err = vcs.DetectVcsFromFS(cwd)
-		if empty == false && err == vcs.ErrCannotDetectVCS {
-			Info("Updating vendored package %s\n", dep.Name)
-
-			// Remove old directory. cmd.UpdateImports will retrieve the version
-			// and cmd.SetReference will set the version.
-			err = os.RemoveAll(cwd)
-			if err != nil {
-				Error("Unable to update vendored dependency %s.\n", dep.Name)
-			} else {
-				dep.UpdateAsVendored = true
-			}
-		}
-	}
+	updatingVendored = update
 
 	return conf, nil
 }
diff --git a/glide.lock b/glide.lock
index 2494ed3..d78601e 100644
--- a/glide.lock
+++ b/glide.lock
@@ -1,10 +1,8 @@
 hash: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
-updated: 2015-12-09T10:37:37.177792534-05:00
+updated: 2015-12-10T10:46:38.137326757-05:00
 imports:
 - name: github.com/codegangsta/cli
   version: 0302d3914d2a6ad61404584cdae6e6dbc9c03599
-- name: github.com/Masterminds/convert
-  version: a9949121a2e2192ca92fa6dddfeaaa4a4412d955
 - name: github.com/Masterminds/cookoo
   version: 78aa11ce75e257c51be7ea945edb84cf19c4a6de
   repo: git@github.com:Masterminds/cookoo.git
