Merge pull request #535 from Fugiman/resolve_vendor_dir_symlinks Resolve vendor directory symlinks
diff --git a/CHANGELOG.md b/CHANGELOG.md index cd27a18..356b864 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md
@@ -1,3 +1,13 @@ +# Unreleased + +## Added +- #533: Log VCS output with debug (`--debug` switch) when there was a VCS error (thanks @atombender) + +## Changed +- #521: Sort subpackages for glide.yaml and glide.lock to avoid spurious diffs +- #487: Skip lookup of subpackage location when parent repo is already known. + This skips unnecessary network requests (thanks @hori-ryota) + # Release 0.11.1 (2016-07-21) ## Fixed
diff --git a/msg/msg.go b/msg/msg.go index 34213fd..8b0f077 100644 --- a/msg/msg.go +++ b/msg/msg.go
@@ -7,6 +7,8 @@ "os" "strings" "sync" + + "github.com/Masterminds/vcs" ) // Messenger provides the underlying implementation that displays output to @@ -176,7 +178,6 @@ // locked to avoid displaying one message in the middle of another one. m.Lock() defer m.Unlock() - // Get rid of the annoying fact that messages need \n at the end, but do // it in a backward compatible way. if !strings.HasSuffix(msg, "\n") { @@ -188,6 +189,21 @@ } else { fmt.Fprintf(m.Stderr, msg, args...) } + + // If an arg is a vcs error print the output if in debug mode. This is + // capured here rather than calling Debug because concurrent operations + // could cause other messages to appear between the initial error and the + // debug output by unlocking and calling Debug. + if len(args) != 0 && !m.Quiet && m.IsDebugging { + if err, ok := args[len(args)-1].(error); ok { + switch t := err.(type) { + case *vcs.LocalError: + fmt.Fprintf(m.Stderr, "[DEBUG]\tOutput was: %s", strings.TrimSpace(t.Out())) + case *vcs.RemoteError: + fmt.Fprintf(m.Stderr, "[DEBUG]\tOutput was: %s", strings.TrimSpace(t.Out())) + } + } + } } // Msg prints a message with optional arguments, that can be printed, of
diff --git a/util/normalizename_test.go b/util/normalizename_test.go index c6f4d02..d5a454b 100644 --- a/util/normalizename_test.go +++ b/util/normalizename_test.go
@@ -31,11 +31,18 @@ extra: "", }, { + input: "otherurl/example/root/sub", + root: "otherurl/example/root", + extra: "sub", + }, + { input: "net", root: "net", extra: "", }, } + remotePackageCache["otherurl/example/root"] = "otherurl/example/root" + for _, test := range packages { root, extra := NormalizeName(test.input) if root != test.root {
diff --git a/util/util.go b/util/util.go index a5b346f..f0854d2 100644 --- a/util/util.go +++ b/util/util.go
@@ -110,7 +110,7 @@ func checkRemotePackageCache(pkg string) (string, bool) { for k, v := range remotePackageCache { - if pkg == k { + if pkg == k || strings.HasPrefix(pkg, k + "/") { return v, true } } @@ -290,7 +290,7 @@ out, err := exec.Command(goExecutable, "env", "GOROOT").Output() if goRoot = strings.TrimSpace(string(out)); len(goRoot) == 0 || err != nil { return nil, fmt.Errorf("Please set the $GOROOT environment " + - "variable to use this command\n") + "variable to use this command\n") } buildContext.GOROOT = goRoot }