Import upstream changes up to constabulary/gb@572f68e
diff --git a/fetch.go b/fetch.go
index dd953a8..ef16489 100644
--- a/fetch.go
+++ b/fetch.go
@@ -3,15 +3,15 @@
 import (
 	"flag"
 	"fmt"
+	"go/build"
 	"log"
 	"net/url"
 	"path/filepath"
 	"runtime"
 	"sort"
 
-	"go/build"
-
 	"github.com/FiloSottile/gvt/gbvendor"
+	"github.com/constabulary/gb/fileutils"
 )
 
 var (
@@ -122,7 +122,7 @@
 	dst := filepath.Join(vendorDir(), dep.Importpath)
 	src := filepath.Join(wc.Dir(), dep.Path)
 
-	if err := vendor.Copypath(dst, src); err != nil {
+	if err := fileutils.Copypath(dst, src); err != nil {
 		return err
 	}
 
diff --git a/gbvendor/copy.go b/gbvendor/copy.go
deleted file mode 100644
index f2d5d2c..0000000
--- a/gbvendor/copy.go
+++ /dev/null
@@ -1,72 +0,0 @@
-package vendor
-
-import (
-	"fmt"
-	"io"
-	"os"
-	"path/filepath"
-	"strings"
-
-	"github.com/constabulary/gb/fileutils"
-)
-
-const debugCopypath = true
-const debugCopyfile = false
-
-// Copypath copies the contents of src to dst, excluding any file or
-// directory that starts with a period.
-func Copypath(dst string, src string) error {
-	err := filepath.Walk(src, func(path string, info os.FileInfo, err error) error {
-		if err != nil {
-			return err
-		}
-
-		if strings.HasPrefix(filepath.Base(path), ".") {
-			if info.IsDir() {
-				return filepath.SkipDir
-			}
-			return nil
-		}
-
-		if info.IsDir() {
-			return nil
-		}
-
-		if info.Mode()&os.ModeSymlink != 0 {
-			if debugCopypath {
-				fmt.Printf("skipping symlink: %v\n", path)
-			}
-			return nil
-		}
-
-		dst := filepath.Join(dst, path[len(src):])
-		return copyfile(dst, path)
-	})
-	if err != nil {
-		// if there was an error during copying, remove the partial copy.
-		fileutils.RemoveAll(dst)
-	}
-	return err
-}
-
-func copyfile(dst, src string) error {
-	err := mkdir(filepath.Dir(dst))
-	if err != nil {
-		return fmt.Errorf("copyfile: mkdirall: %v", err)
-	}
-	r, err := os.Open(src)
-	if err != nil {
-		return fmt.Errorf("copyfile: open(%q): %v", src, err)
-	}
-	defer r.Close()
-	w, err := os.Create(dst)
-	if err != nil {
-		return fmt.Errorf("copyfile: create(%q): %v", dst, err)
-	}
-	defer w.Close()
-	if debugCopyfile {
-		fmt.Printf("copyfile(dst: %v, src: %v)\n", dst, src)
-	}
-	_, err = io.Copy(w, r)
-	return err
-}
diff --git a/gbvendor/imports.go b/gbvendor/imports.go
index 80174af..0124483 100644
--- a/gbvendor/imports.go
+++ b/gbvendor/imports.go
@@ -35,9 +35,7 @@
 
 		for _, s := range f.Imports {
 			p := strings.Replace(s.Path.Value, "\"", "", -1)
-			if !contains(stdlib, p) {
-				pkgs[p] = true
-			}
+			pkgs[p] = true
 		}
 		return nil
 	}
diff --git a/gbvendor/imports_test.go b/gbvendor/imports_test.go
index 283f9db..bdde910 100644
--- a/gbvendor/imports_test.go
+++ b/gbvendor/imports_test.go
@@ -18,7 +18,7 @@
 		t.Fatalf("ParseImports(%q): %v", root, err)
 	}
 
-	want := set("github.com/quux/flobble", "github.com/lypo/moopo", "github.com/hoo/wuu")
+	want := set("fmt", "github.com/quux/flobble", "github.com/lypo/moopo", "github.com/hoo/wuu")
 	if !reflect.DeepEqual(got, want) {
 		t.Fatalf("ParseImports(%q): want: %v, got %v", root, want, got)
 	}
diff --git a/gbvendor/repo.go b/gbvendor/repo.go
index 97014f1..eb52e84 100644
--- a/gbvendor/repo.go
+++ b/gbvendor/repo.go
@@ -70,7 +70,7 @@
 	}
 
 	path = u.Host + u.Path
-	if !regexp.MustCompile(`^([A-Za-z0-9-]+)(.[A-Za-z0-9-]+)+(/[A-Za-z0-9-_.~]+)+$`).MatchString(path) {
+	if !regexp.MustCompile(`^([A-Za-z0-9-]+)(\.[A-Za-z0-9-]+)+(/[A-Za-z0-9-_.~]+)*$`).MatchString(path) {
 		return nil, "", fmt.Errorf("%q is not a valid import path", path)
 	}
 
diff --git a/gbvendor/repo_test.go b/gbvendor/repo_test.go
index 03c5107..b42bbc8 100644
--- a/gbvendor/repo_test.go
+++ b/gbvendor/repo_test.go
@@ -84,6 +84,12 @@
 		},
 		extra: "",
 	}, {
+		path: "goji.io",
+		want: &gitrepo{
+			url: "https://github.com/goji/goji",
+		},
+		extra: "",
+	}, {
 		path: "golang.org/x/tools/go/vcs",
 		want: &gitrepo{
 			url: "https://go.googlesource.com/tools",
diff --git a/gbvendor/stdlib.go b/gbvendor/stdlib.go
deleted file mode 100644
index f297561..0000000
--- a/gbvendor/stdlib.go
+++ /dev/null
@@ -1,138 +0,0 @@
-package vendor
-
-// packages from the standard lib. They are excluded
-// from the package map.
-var stdlib = map[string]bool{
-	"C":                   true,
-	"archive/tar":         true,
-	"archive/zip":         true,
-	"bufio":               true,
-	"bytes":               true,
-	"compress/bzip2":      true,
-	"compress/flate":      true,
-	"compress/gzip":       true,
-	"compress/lzw":        true,
-	"compress/zlib":       true,
-	"container/heap":      true,
-	"container/list":      true,
-	"container/ring":      true,
-	"crypto":              true,
-	"crypto/aes":          true,
-	"crypto/cipher":       true,
-	"crypto/des":          true,
-	"crypto/dsa":          true,
-	"crypto/ecdsa":        true,
-	"crypto/elliptic":     true,
-	"crypto/hmac":         true,
-	"crypto/md5":          true,
-	"crypto/rand":         true,
-	"crypto/rc4":          true,
-	"crypto/rsa":          true,
-	"crypto/sha1":         true,
-	"crypto/sha256":       true,
-	"crypto/sha512":       true,
-	"crypto/subtle":       true,
-	"crypto/tls":          true,
-	"crypto/x509":         true,
-	"crypto/x509/pkix":    true,
-	"database/sql":        true,
-	"database/sql/driver": true,
-	"debug/dwarf":         true,
-	"debug/elf":           true,
-	"debug/gosym":         true,
-	"debug/macho":         true,
-	"debug/pe":            true,
-	"encoding":            true,
-	"encoding/ascii85":    true,
-	"encoding/asn1":       true,
-	"encoding/base32":     true,
-	"encoding/base64":     true,
-	"encoding/binary":     true,
-	"encoding/csv":        true,
-	"encoding/gob":        true,
-	"encoding/hex":        true,
-	"encoding/json":       true,
-	"encoding/pem":        true,
-	"encoding/xml":        true,
-	"errors":              true,
-	"expvar":              true,
-	"flag":                true,
-	"fmt":                 true,
-	"go/ast":              true,
-	"go/build":            true,
-	"go/doc":              true,
-	"go/format":           true,
-	"go/parser":           true,
-	"go/printer":          true,
-	"go/scanner":          true,
-	"go/token":            true,
-	"hash":                true,
-	"hash/adler32":        true,
-	"hash/crc32":          true,
-	"hash/crc64":          true,
-	"hash/fnv":            true,
-	"html":                true,
-	"html/template":       true,
-	"image":               true,
-	"image/color":         true,
-	"image/draw":          true,
-	"image/gif":           true,
-	"image/jpeg":          true,
-	"image/png":           true,
-	"index/suffixarray":   true,
-	"io":                  true,
-	"io/ioutil":           true,
-	"log":                 true,
-	"log/syslog":          true,
-	"math":                true,
-	"math/big":            true,
-	"math/cmplx":          true,
-	"math/rand":           true,
-	"mime":                true,
-	"mime/multipart":      true,
-	"net":                 true,
-	"net/http":            true,
-	"net/http/cgi":        true,
-	"net/http/cookiejar":  true,
-	"net/http/fcgi":       true,
-	"net/http/httptest":   true,
-	"net/http/httputil":   true,
-	"net/http/pprof":      true,
-	"net/mail":            true,
-	"net/rpc":             true,
-	"net/rpc/jsonrpc":     true,
-	"net/smtp":            true,
-	"net/textproto":       true,
-	"net/url":             true,
-	"os":                  true,
-	"os/exec":             true,
-	"os/signal":           true,
-	"os/user":             true,
-	"path":                true,
-	"path/filepath":       true,
-	"reflect":             true,
-	"regexp":              true,
-	"regexp/syntax":       true,
-	"runtime":             true,
-	"runtime/cgo":         true,
-	"runtime/debug":       true,
-	"runtime/pprof":       true,
-	"sort":                true,
-	"strconv":             true,
-	"strings":             true,
-	"sync":                true,
-	"sync/atomic":         true,
-	"syscall":             true,
-	"testing":             true,
-	"testing/iotest":      true,
-	"testing/quick":       true,
-	"text/scanner":        true,
-	"text/tabwriter":      true,
-	"text/template":       true,
-	"text/template/parse": true,
-	"time":                true,
-	"unicode":             true,
-	"unicode/utf16":       true,
-	"unicode/utf8":        true,
-	"unsafe":              true,
-}
diff --git a/rebuild.go b/rebuild.go
index 0f523c2..449747c 100644
--- a/rebuild.go
+++ b/rebuild.go
@@ -9,9 +9,8 @@
 	"sync"
 	"sync/atomic"
 
-	"github.com/constabulary/gb/fileutils"
-
 	"github.com/FiloSottile/gvt/gbvendor"
+	"github.com/constabulary/gb/fileutils"
 )
 
 var (
@@ -113,7 +112,7 @@
 	}
 
 	src := filepath.Join(wc.Dir(), dep.Path)
-	if err := vendor.Copypath(dst, src); err != nil {
+	if err := fileutils.Copypath(dst, src); err != nil {
 		return err
 	}
 
diff --git a/update.go b/update.go
index a719ced..a7d4d43 100644
--- a/update.go
+++ b/update.go
@@ -107,7 +107,7 @@
 			dst := filepath.Join(vendorDir(), filepath.FromSlash(dep.Importpath))
 			src := filepath.Join(wc.Dir(), dep.Path)
 
-			if err := vendor.Copypath(dst, src); err != nil {
+			if err := fileutils.Copypath(dst, src); err != nil {
 				return err
 			}
 
diff --git a/vendor/github.com/constabulary/gb/fileutils/fileutils.go b/vendor/github.com/constabulary/gb/fileutils/fileutils.go
index c2c2dc7..a0bba9f 100644
--- a/vendor/github.com/constabulary/gb/fileutils/fileutils.go
+++ b/vendor/github.com/constabulary/gb/fileutils/fileutils.go
@@ -10,7 +10,7 @@
 	"strings"
 )
 
-const debugCopypath = true
+const debugCopypath = false
 const debugCopyfile = false
 
 // Copypath copies the contents of src to dst, excluding any file or
@@ -40,7 +40,7 @@
 		}
 
 		dst := filepath.Join(dst, path[len(src):])
-		return copyfile(dst, path)
+		return Copyfile(dst, path)
 	})
 	if err != nil {
 		// if there was an error during copying, remove the partial copy.
@@ -49,7 +49,7 @@
 	return err
 }
 
-func copyfile(dst, src string) error {
+func Copyfile(dst, src string) error {
 	err := mkdir(filepath.Dir(dst))
 	if err != nil {
 		return fmt.Errorf("copyfile: mkdirall: %v", err)
diff --git a/vendor/manifest b/vendor/manifest
index 60981a3..61983d2 100644
--- a/vendor/manifest
+++ b/vendor/manifest
@@ -4,7 +4,7 @@
 		{
 			"importpath": "github.com/constabulary/gb/fileutils",
 			"repository": "https://github.com/constabulary/gb",
-			"revision": "9e201fb977e3dff7e0c94b73640be2a97285c418",
+			"revision": "572f68e6f0e403df7e6b4426bb26e535b988398c",
 			"branch": "master",
 			"path": "/fileutils"
 		}