Replacing vendor directory after successful export
diff --git a/repo/installer.go b/repo/installer.go
index 661106e..eb3cd66 100644
--- a/repo/installer.go
+++ b/repo/installer.go
@@ -2,6 +2,7 @@
 
 import (
 	"fmt"
+	"io/ioutil"
 	"os"
 	"path/filepath"
 	"strings"
@@ -246,12 +247,11 @@
 
 // Export from the cache to the vendor directory
 func (i *Installer) Export(conf *cfg.Config) error {
-	msg.Info("Removing existing vendor dependencies")
-	err := os.RemoveAll(i.VendorPath())
+	tempDir, err := ioutil.TempDir("", "glide-vendor")
 	if err != nil {
 		return err
 	}
-	msg.Info("Exporting resolved dependencies to vendor directory")
+	msg.Info("Exporting resolved dependencies...")
 	done := make(chan struct{}, concurrentWorkers)
 	in := make(chan *cfg.Dependency, concurrentWorkers)
 	var wg sync.WaitGroup
@@ -273,10 +273,14 @@
 					cdir := filepath.Join(cache.Location(), "src", key)
 					repo, err := dep.GetRepo(cdir)
 					if err != nil {
+						err2 := os.RemoveAll(tempDir)
+						if err2 != nil {
+							msg.Debug("Unable to delete temp vendor directory: %s", err2)
+						}
 						msg.Die(err.Error())
 					}
 					msg.Info("--> Exporting %s", dep.Name)
-					if err := repo.ExportDir(filepath.Join(i.VendorPath(), filepath.ToSlash(dep.Name))); err != nil {
+					if err := repo.ExportDir(filepath.Join(tempDir, filepath.ToSlash(dep.Name))); err != nil {
 						msg.Err("Export failed for %s: %s\n", dep.Name, err)
 						// Capture the error while making sure the concurrent
 						// operations don't step on each other.
@@ -320,7 +324,24 @@
 		done <- struct{}{}
 	}
 
-	return returnErr
+	if returnErr != nil {
+		err2 := os.RemoveAll(tempDir)
+		if err2 != nil {
+			msg.Debug("Unable to delete temp vendor directory: %s", err2)
+		}
+
+		return returnErr
+	}
+
+	msg.Info("Replacing existing vendor dependencies")
+	err = os.RemoveAll(i.VendorPath())
+	if err != nil {
+		return err
+	}
+
+	err = os.Rename(tempDir, i.VendorPath())
+	return err
+
 }
 
 // List resolves the complete dependency tree and returns a list of dependencies.