Last bit of glide chasing, for now

This pulls in a fix where cache repos could erroneously error on
exportVersionTo() if they were stale, as the method didn't ensure cache
repos are synced before erroring out.
diff --git a/glide.lock b/glide.lock
index bd87515..fff4efe 100644
--- a/glide.lock
+++ b/glide.lock
@@ -1,5 +1,5 @@
 hash: e12d18f87508f2f53e2981b52a02ed23d135f59ab90f3afca813727c0685eec0
-updated: 2016-09-15T09:56:26.054743146-04:00
+updated: 2016-09-27T23:50:39.744887915-04:00
 imports:
 - name: github.com/armon/go-radix
   branch: master
@@ -14,8 +14,8 @@
   version: v1.8.0
   revision: fbe9fb6ad5b5f35b3e82a7c21123cfc526cbf895
 - name: github.com/sdboyer/gps
-  version: v0.11.1
-  revision: 507f709c7eb2429371a22cff9f6077630827e450
+  branch: master
+  revision: 44255835bcf52ec1dfacf207dbbb4c1bffe378d0
 - name: github.com/termie/go-shutil
   revision: bcacb06fecaeec8dc42af03c87c6949f4a05c74c
 - name: gopkg.in/yaml.v2
diff --git a/glide.yaml b/glide.yaml
index dcc78aa..2bd32d8 100644
--- a/glide.yaml
+++ b/glide.yaml
@@ -18,4 +18,4 @@
 - package: github.com/Masterminds/semver
   branch: 2.x
 - package: github.com/sdboyer/gps
-  version: ^0.11.0
+  branch: master
diff --git a/vendor/github.com/sdboyer/gps/source.go b/vendor/github.com/sdboyer/gps/source.go
index 75265d9..81cb3be 100644
--- a/vendor/github.com/sdboyer/gps/source.go
+++ b/vendor/github.com/sdboyer/gps/source.go
@@ -100,7 +100,7 @@
 	if !bs.crepo.synced {
 		err = bs.crepo.r.Update()
 		if err != nil {
-			return nil, nil, fmt.Errorf("could not fetch latest updates into repository")
+			return nil, nil, fmt.Errorf("failed fetching latest updates with err: %s", err.Error())
 		}
 		bs.crepo.synced = true
 	}
diff --git a/vendor/github.com/sdboyer/gps/vcs_source.go b/vendor/github.com/sdboyer/gps/vcs_source.go
index 338a2da..91089ca 100644
--- a/vendor/github.com/sdboyer/gps/vcs_source.go
+++ b/vendor/github.com/sdboyer/gps/vcs_source.go
@@ -30,50 +30,68 @@
 }
 
 func (s *gitSource) exportVersionTo(v Version, to string) error {
-	s.crepo.mut.Lock()
-	defer s.crepo.mut.Unlock()
-
+	// Get away without syncing local, if we can
 	r := s.crepo.r
-	if !r.CheckLocal() {
-		err := r.Get()
-		if err != nil {
-			return fmt.Errorf("failed to clone repo from %s", r.Remote())
-		}
-	}
-	// Back up original index
-	idx, bak := filepath.Join(r.LocalPath(), ".git", "index"), filepath.Join(r.LocalPath(), ".git", "origindex")
-	err := os.Rename(idx, bak)
-	if err != nil {
+	// ...but local repo does have to at least exist
+	if err := s.ensureCacheExistence(); err != nil {
 		return err
 	}
 
-	// TODO(sdboyer) could have an err here
-	defer os.Rename(bak, idx)
+	do := func() error {
+		s.crepo.mut.Lock()
+		defer s.crepo.mut.Unlock()
 
-	vstr := v.String()
-	if rv, ok := v.(PairedVersion); ok {
-		vstr = rv.Underlying().String()
+		// Back up original index
+		idx, bak := filepath.Join(r.LocalPath(), ".git", "index"), filepath.Join(r.LocalPath(), ".git", "origindex")
+		err := os.Rename(idx, bak)
+		if err != nil {
+			return err
+		}
+
+		// could have an err here...but it's hard to imagine how?
+		defer os.Rename(bak, idx)
+
+		vstr := v.String()
+		if rv, ok := v.(PairedVersion); ok {
+			vstr = rv.Underlying().String()
+		}
+
+		out, err := r.RunFromDir("git", "read-tree", vstr)
+		if err != nil {
+			return fmt.Errorf("%s: %s", out, err)
+		}
+
+		// Ensure we have exactly one trailing slash
+		to = strings.TrimSuffix(to, string(os.PathSeparator)) + string(os.PathSeparator)
+		// Checkout from our temporary index to the desired target location on
+		// disk; now it's git's job to make it fast.
+		//
+		// Sadly, this approach *does* also write out vendor dirs. There doesn't
+		// appear to be a way to make checkout-index respect sparse checkout
+		// rules (-a supercedes it). The alternative is using plain checkout,
+		// though we have a bunch of housekeeping to do to set up, then tear
+		// down, the sparse checkout controls, as well as restore the original
+		// index and HEAD.
+		out, err = r.RunFromDir("git", "checkout-index", "-a", "--prefix="+to)
+		if err != nil {
+			return fmt.Errorf("%s: %s", out, err)
+		}
+		return nil
 	}
 
-	out, err := r.RunFromDir("git", "read-tree", vstr)
-	if err != nil {
-		return fmt.Errorf("%s: %s", out, err)
+	err := do()
+	if err != nil && !s.crepo.synced {
+		// If there was an err, and the repo cache is stale, it might've been
+		// beacuse we were missing the rev/ref. Try syncing, then run the export
+		// op again.
+		err = s.syncLocal()
+		if err != nil {
+			return err
+		}
+		err = do()
 	}
 
-	// Ensure we have exactly one trailing slash
-	to = strings.TrimSuffix(to, string(os.PathSeparator)) + string(os.PathSeparator)
-	// Checkout from our temporary index to the desired target location on disk;
-	// now it's git's job to make it fast. Sadly, this approach *does* also
-	// write out vendor dirs. There doesn't appear to be a way to make
-	// checkout-index respect sparse checkout rules (-a supercedes it);
-	// the alternative is using plain checkout, though we have a bunch of
-	// housekeeping to do to set up, then tear down, the sparse checkout
-	// controls, as well as restore the original index and HEAD.
-	out, err = r.RunFromDir("git", "checkout-index", "-a", "--prefix="+to)
-	if err != nil {
-		return fmt.Errorf("%s: %s", out, err)
-	}
-	return nil
+	return err
 }
 
 func (s *gitSource) listVersions() (vlist []Version, err error) {
@@ -502,10 +520,19 @@
 	r.mut.Lock()
 	defer r.mut.Unlock()
 
+	// TODO(sdboyer) sloppy - this update may not be necessary
+	if !r.synced {
+		err := r.r.Update()
+		if err != nil {
+			return fmt.Errorf("err on attempting to update repo: %s", err.Error())
+		}
+	}
+
+	r.r.UpdateVersion(v.String())
+
 	// TODO(sdboyer) This is a dumb, slow approach, but we're punting on making
 	// these fast for now because git is the OVERWHELMING case (it's handled in
 	// its own method)
-	r.r.UpdateVersion(v.String())
 
 	cfg := &shutil.CopyTreeOptions{
 		Symlinks:     true,
diff --git a/vendor/gopkg.in/yaml.v2/README.md b/vendor/gopkg.in/yaml.v2/README.md
index 7b8bd86..1884de6 100644
--- a/vendor/gopkg.in/yaml.v2/README.md
+++ b/vendor/gopkg.in/yaml.v2/README.md
@@ -42,7 +42,7 @@
 License
 -------
 
-The yaml package is licensed under the LGPL with an exception that allows it to be linked statically. Please see the LICENSE file for details.
+The yaml package is licensed under the Apache License 2.0. Please see the LICENSE file for details.
 
 
 Example