Giter VIP home page Giter VIP logo

gvt's Introduction

gvt was a minimalistic Go vendoring tool made for the vendor/ folder (once known as the GO15VENDOREXPERIMENT).

It was based on gb-vendor by Dave Cheney.

Since Go 1.11, the go tool supports modules, a native solution to the dependency problem.

The go tool understands gvt manifest files, so you just have to run

GO111MODULE=on go mod init
GO111MODULE=on go mod vendor

to migrate and still populate the vendor/ folder for backwards compatibility.

Read more in the docs or on the wiki.

Modules support is experimental in 1.11, but it will probably serve you better than gvt would.

— So long, and thanks for all the fish!

gvt's People

Contributors

casualjim avatar challiwill avatar conikeec avatar elithrar avatar filosottile avatar flavianmissi avatar jboelter avatar josephspurrier avatar kennwhite avatar philk avatar shawnps avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gvt's Issues

gvt doesn't include licenses from nested vendored directories

The terraform project contains a vendor directory, in there it has a bunch of libraries that contain license files. When vendoring terraform with gvt the license files no longer appear.

original repo:
https://github.com/hashicorp/terraform/tree/master/vendor/github.com/mitchellh/mapstructure

repo with gvt vendored terraform
https://github.com/casualjim/gvtbug/tree/master/vendor/github.com/hashicorp/terraform/vendor/github.com/mitchellh/mapstructure

Compared to others?

I'm one of the authors of Glide, a tool for managing the packages in a vendor/ directory with the GO15VENDOREXPERIMENT. I'm curious how you see the two comparing and what you see gvt solving.

While I have a self interest in understanding needs, I'm curious so I can discuss the differences with people given the number of options popping up.

Thanks.

Add support for relative imports

Any idea why this fails (using latest gvt)?

$ gvt fetch gopkg.in/couchbaselabs/gocb.v1
2016/07/06 10:52:04 Fetching: gopkg.in/couchbaselabs/gocb.v1
2016/07/06 10:52:12 · Fetching recursive dependency: github.com/couchbase/gocb/gocbcore
2016/07/06 10:52:14 ·· Fetching recursive dependency: ./javamock
2016/07/06 10:52:14 command "fetch" failed: error fetching ./javamock: "./javamock" is not a valid import path

Fails with symlinks

Projects can contain internal relative symlinks and work fine with go get.
(example: https://github.com/valyala/ybc)

However, the current file handling code skips symlinks when copying - breaking otherwise fine working go-getable Go packages.

I think I have a small patch to make it work, but those knowing github.com/constabulary/gb and how it's vendored into gvt could probably make a more general patch.

Add a fast "restore" command

Hey!

It seems that "gvt restore" will "git pull" everything unconditionally. It would be convenient to have it check if the dependency is already at the desired version and skip the "git pull". This way, "gvt restore" can be used before each compilation.

Vendor folder and goxc not compatible ?

This is not an issue with gvt, but it might be that gvt can easily adapt to this problem.

I use goxc to cross compile, and i just starting using gvt to do my vendoring, and when i tried to do a goxc compile (which was working fine the last few months) it went nuts.

It seems that others might be hitting same issue.
laher/goxc#99

thoughts ?

fetch error message could be more descriptive

I made a typo when adding a dependency to vendor/:

 $ gvt fetch golang.org/x/tools/loader
2016/05/01 22:45:32 command "fetch" failed: lstat /tmp/gvt-126032266/loader: no such file or directory
 $ gvt fetch golang.org/x/tools/go/loader
[...]

Only after I entered that temporary directory did I figure out that I was using loader instead of go/loader - for a second I thought something else was going wrong. Perhaps the error given by gvt could be more descriptive if the vcs repository was cloned, but the package in it doesn't exist.

Fetching a recursive dependency fails when the repo contains a license directory

$ gvt fetch github.com/apcera/libretto
...
fetches a bunch of recursive dependencies...
...
2016/04/22 13:57:17 fetching recursive dependency github.com/apcera/libretto/Godeps/_workspace/src/github.com/vmware/govmomi
2016/04/22 13:57:17 command "fetch" failed: copyfile: create("$GOPATH/src/foo/vendor/github.com/apcera/libretto/Godeps/_workspace/src/github.com/vmware/govmomi/LICENSE"): open /$GOPATH/src/foo/vendor/github.com/apcera/libretto/Godeps/_workspace/src/github.com/vmware/govmomi/LICENSE: is a directory

It fails because the vmware/govmomi repo contains a directory called license. gvt is confusing this with a LICENSE file and trying to fetch it.

Interestingly, I can't reproduce this when I run gvt fetch github.com/vmware/govmomi by itself. The problem only seems to occur when fetching vmware/govmomi as a recursive dependency of another repo.

UPDATE: This may only occur on case-insensitive file systems, where license == LICENSE (sigh... OS X).

Shallow and narrow git clone

Currently, gvt does a git clone of the whole repo, followed by a git checkout of the desired branch.

Could you do git clone --branch xxx --depth 1 instead, to fetch just the version required?

It seems the current behaviour stems from constabulary/gb#219, but gvt is downloading into a temp directory so shouldn't need that behaviour?

gvt downloads the same repository multiple times for different sub-packages

As an example, following manifest file

{
    "version": 0,
    "dependencies": [
        {
            "importpath": "github.com/docker/docker/pkg/jsonlog",
            "repository": "https://github.com/docker/docker",
            "revision": "319bbff799d637ad76edfe348fedb4adc1a531f3",
            "branch": "master",
            "path": "/pkg/jsonlog"
        },
        {
            "importpath": "github.com/docker/docker/pkg/jsonmessage",
            "repository": "https://github.com/docker/docker",
            "revision": "319bbff799d637ad76edfe348fedb4adc1a531f3",
            "branch": "master",
            "path": "/pkg/jsonmessage"
        },
        {
            "importpath": "github.com/docker/docker/pkg/progress",
            "repository": "https://github.com/docker/docker",
            "revision": "319bbff799d637ad76edfe348fedb4adc1a531f3",
            "branch": "master",
            "path": "/pkg/progress"
        },
        {
            "importpath": "github.com/docker/docker/pkg/streamformatter",
            "repository": "https://github.com/docker/docker",
            "revision": "319bbff799d637ad76edfe348fedb4adc1a531f3",
            "branch": "master",
            "path": "/pkg/streamformatter"
        },
        {
            "importpath": "github.com/docker/docker/pkg/system",
            "repository": "https://github.com/docker/docker",
            "revision": "eb729a0cb0be1f2d2ba5c616fcd4e585289f6dfc",
            "branch": "master",
            "path": "/pkg/system"
        },
        {
            "importpath": "github.com/docker/docker/pkg/term",
            "repository": "https://github.com/docker/docker",
            "revision": "03864c1db07fff1db08becca1ec4e9bb4b49ecd2",
            "branch": "master",
            "path": "/pkg/term"
        },
        {
            "importpath": "github.com/docker/go-units",
            "repository": "https://github.com/docker/go-units",
            "revision": "5d2041e26a699eaca682e2ea41c8f891e1060444",
            "branch": "master"
        }
    ]
}

causes gvt to clone Docker repo multiple times but then github decides to rate limit us hence everything takes way longer than expected.

vagrant  13744  0.3  0.2 450640 21012 pts/0    Sl+  06:16   0:00  |               \_ /home/vagrant/go/bin/gvt restore
vagrant  13807  0.0  0.0  22400  6192 pts/0    S+   06:16   0:00  |                   \_ git clone -q https://github.com/docker/docker /tmp/gvt-046705861
vagrant  13808  0.4  0.1 181036 15496 pts/0    S+   06:16   0:00  |                   |   \_ git-remote-https origin https://github.com/docker/docker
vagrant  13850  0.0  0.0  32676  7772 pts/0    Sl+  06:16   0:00  |                   |       \_ git fetch-pack --stateless-rpc --stdin --lock-pack --thin --check-self-contained-and-connected --cloning --no-progress https://github.com/docker/docker/
vagrant  13869  0.8  0.1  39524 15336 pts/0    S+   06:16   0:01  |                   |           \_ git index-pack --stdin --fix-thin --keep=fetch-pack 13850 on vagrant --check-self-contained-and-connected --pack_header=2,137765
vagrant  13810  0.0  0.0  22400  6160 pts/0    S+   06:16   0:00  |                   \_ git clone -q https://github.com/docker/docker /tmp/gvt-884160352
vagrant  13811  0.4  0.1 181252 15712 pts/0    S+   06:16   0:00  |                   |   \_ git-remote-https origin https://github.com/docker/docker
vagrant  13851  0.0  0.0  32676  7880 pts/0    Sl+  06:16   0:00  |                   |       \_ git fetch-pack --stateless-rpc --stdin --lock-pack --thin --check-self-contained-and-connected --cloning --no-progress https://github.com/docker/docker/
vagrant  13870  0.9  0.2  39524 18212 pts/0    S+   06:16   0:01  |                   |           \_ git index-pack --stdin --fix-thin --keep=fetch-pack 13851 on vagrant --check-self-contained-and-connected --pack_header=2,137765
vagrant  13813  0.0  0.0  22400  6132 pts/0    S+   06:16   0:00  |                   \_ git clone -q https://github.com/docker/docker /tmp/gvt-120104255
vagrant  13814  0.4  0.1 181036 15512 pts/0    S+   06:16   0:00  |                   |   \_ git-remote-https origin https://github.com/docker/docker
vagrant  13855  0.0  0.0  32676  7928 pts/0    Sl+  06:16   0:00  |                   |       \_ git fetch-pack --stateless-rpc --stdin --lock-pack --thin --check-self-contained-and-connected --cloning --no-progress https://github.com/docker/docker/
vagrant  13872  0.8  0.1  39524 14752 pts/0    S+   06:16   0:01  |                   |           \_ git index-pack --stdin --fix-thin --keep=fetch-pack 13855 on vagrant --check-self-contained-and-connected --pack_header=2,137765
vagrant  13816  0.0  0.0  22400  6128 pts/0    S+   06:16   0:00  |                   \_ git clone -q https://github.com/docker/docker /tmp/gvt-914765714
vagrant  13817  0.4  0.1 181036 15600 pts/0    S+   06:16   0:00  |                   |   \_ git-remote-https origin https://github.com/docker/docker
vagrant  13873  0.0  0.0  32676  7796 pts/0    Sl+  06:16   0:00  |                   |       \_ git fetch-pack --stateless-rpc --stdin --lock-pack --thin --check-self-contained-and-connected --cloning --no-progress https://github.com/docker/docker/
vagrant  13878  0.9  0.1  39524 16292 pts/0    S+   06:16   0:01  |                   |           \_ git index-pack --stdin --fix-thin --keep=fetch-pack 13873 on vagrant --check-self-contained-and-connected --pack_header=2,137765
vagrant  13830  0.0  0.0  22400  6056 pts/0    S+   06:16   0:00  |                   \_ git clone -q https://github.com/docker/docker /tmp/gvt-352514708
vagrant  13831  0.4  0.1 180936 15564 pts/0    S+   06:16   0:00  |                   |   \_ git-remote-https origin https://github.com/docker/docker
vagrant  13893  0.0  0.0  32676  7804 pts/0    Sl+  06:16   0:00  |                   |       \_ git fetch-pack --stateless-rpc --stdin --lock-pack --thin --check-self-contained-and-connected --cloning --no-progress https://github.com/docker/docker/
vagrant  13898  0.8  0.2  39524 16684 pts/0    S+   06:16   0:01  |                   |           \_ git index-pack --stdin --fix-thin --keep=fetch-pack 13893 on vagrant --check-self-contained-and-connected --pack_header=2,137765
vagrant  13847  0.0  0.0  22400  6072 pts/0    S+   06:16   0:00  |                   \_ git clone -q https://github.com/docker/docker /tmp/gvt-254118630
vagrant  13848  0.4  0.1 181080 15640 pts/0    S+   06:16   0:00  |                       \_ git-remote-https origin https://github.com/docker/docker
vagrant  13912  0.0  0.0  32676  7904 pts/0    Sl+  06:16   0:00  |                           \_ git fetch-pack --stateless-rpc --stdin --lock-pack --thin --check-self-contained-and-connected --cloning --no-progress https://github.com/docker/docker/
vagrant  13921  0.8  0.1  39524 13072 pts/0    S+   06:16   0:01  |                               \_ git index-pack --stdin --fix-thin --keep=fetch-pack 13912 on vagrant --check-self-contained-and-connected --pack_header=2,137765

Fetch error during recursive dependencies with -branch flag

For example - trying to fetch github.com/labstack/echo branch v2 results is this:

λ gvt fetch -branch v2 github.com/labstack/echo
2016/03/11 02:18:37 fetching recursive dependency github.com/labstack/gommon/color
warning: Could not find remote branch v2 to clone.
fatal: Remote branch v2 not found in upstream origin
2016/03/11 02:18:39 command "fetch" failed: exit status 1

Can it be fixed?

Error: no buildable Go source files in...

Unsure if this is an issue with gvt, looking to get any feedback.

I was able to download the packages to vendor/ folder.
gvt fetch golang.org/x/sys

But now I am getting the error that it can not build the packages, even though the package is there.

no buildable Go source files in /Users/jesus/.gvm/pkgsets/go1.6/global/src/client/theclient/thepackage/vendor/golang.org/x/sys/windows/svc/eventlog

screen shot 2016-05-19 at 2 07 55 pm

All other packages imported with gvt work fine.

Parallelize `gvt rebuild`

Fetching of all dependencies can take relatively long time (couple of minutes or more). It may be possible to speed it up by running several git fetch calls in parallel.

What do you think? Is there any reason why not to do it?

(If you think it's a good idea, i can give it a shot)

Private repository support request

This is a feature request, not a bug report.

It would be nice if GVT added support for private repositories. There's some discussion for git repositories here, and a script for bitbucket here. Russ Cox mentions here that bad private repo support it's a design flaw in Go, but the discussion is an old one.

The issue is in Go; it would be super useful, and extremely relevant to gvt's use case, if a solution were included in gvt.

`gvt fetch` fails with mildly malformed XML at vanity urls

https://github.com/zombiezen/go-capnproto2 has a vanity url with slightly malformed XML (I'll open an issue there in a second):

$ curl https://zombiezen.com/go/capnproto2
<meta name="go-import" content="zombiezen.com/go/capnproto2 git https://github.com/zombiezen/go-capnproto2">
<h1>zombiezen.com/go/capnproto2</h1>
<a href="https://github.com/zombiezen/go-capnproto2">Git Repository on GitHub</a>

The meta tag isn't closed, and there's no head or body, so parseMetaGoImports fails to fetch it with an XML error:

$ gvt fetch zombiezen.com/go/capnproto2
2016/04/10 15:48:02 command "fetch" failed: XML syntax error on line 4: unexpected EOF

I'd say that's not too unreasonable, except that go get somehow manages to succeed, even though that method is identical to the one in the go source. I haven't been able to figure out why.

Support... well, vendoring

gvt detection of recursive dependencies (import statements) does not know about vendoring, so it will fetch a fresh copy of things that are vendored by the fetched packages.

For example

gvt fetch camlistore.org/pkg/client
2016/03/21 02:01:35 fetching recursive dependency camlistore.org/pkg/auth
2016/03/21 02:01:43 fetching recursive dependency camlistore.org/pkg/blobserver
2016/03/21 02:01:51 fetching recursive dependency camlistore.org/pkg/buildinfo
2016/03/21 02:02:00 fetching recursive dependency camlistore.org/pkg/env
2016/03/21 02:02:08 fetching recursive dependency camlistore.org/pkg/hashutil
2016/03/21 02:02:17 fetching recursive dependency camlistore.org/pkg/httputil
2016/03/21 02:02:26 fetching recursive dependency camlistore.org/pkg/jsonsign
2016/03/21 02:02:35 fetching recursive dependency camlistore.org/pkg/camerrors
2016/03/21 02:02:43 fetching recursive dependency camlistore.org/pkg/misc/gpgagent
2016/03/21 02:02:51 fetching recursive dependency camlistore.org/pkg/misc/pinentry
2016/03/21 02:03:05 fetching recursive dependency camlistore.org/pkg/netutil
2016/03/21 02:03:12 fetching recursive dependency camlistore.org/pkg/osutil
2016/03/21 02:03:28 fetching recursive dependency camlistore.org/pkg/readerutil
2016/03/21 02:03:39 fetching recursive dependency camlistore.org/pkg/schema
2016/03/21 02:03:47 fetching recursive dependency camlistore.org/pkg/rollsum
2016/03/21 02:03:55 fetching recursive dependency camlistore.org/pkg/search
2016/03/21 02:04:03 fetching recursive dependency camlistore.org/pkg/geocode
2016/03/21 02:04:12 fetching recursive dependency camlistore.org/pkg/index
2016/03/21 02:04:25 fetching recursive dependency camlistore.org/pkg/images
2016/03/21 02:04:32 fetching recursive dependency camlistore.org/pkg/magic
2016/03/21 02:04:40 fetching recursive dependency camlistore.org/pkg/media
2016/03/21 02:04:48 fetching recursive dependency camlistore.org/pkg/sorted
2016/03/21 02:04:57 fetching recursive dependency camlistore.org/pkg/types/camtypes
2016/03/21 02:05:05 fetching recursive dependency camlistore.org/pkg/types/clientconfig
2016/03/21 02:05:15 fetching recursive dependency camlistore.org/third_party/code.google.com/p/go.crypto/openpgp
2016/03/21 02:05:27 fetching recursive dependency camlistore.org/third_party/code.google.com/p/go.crypto/cast5
2016/03/21 02:05:34 fetching recursive dependency camlistore.org/third_party/code.google.com/p/leveldb-go/leveldb/db
2016/03/21 02:05:42 fetching recursive dependency camlistore.org/third_party/code.google.com/p/leveldb-go/leveldb/memdb
2016/03/21 02:05:49 fetching recursive dependency camlistore.org/third_party/github.com/bradfitz/latlong
2016/03/21 02:05:56 fetching recursive dependency camlistore.org/third_party/github.com/gorilla/websocket
2016/03/21 02:06:04 fetching recursive dependency github.com/hjfreyer/taglib-go/taglib
2016/03/21 02:06:06 fetching recursive dependency github.com/nf/cr2
2016/03/21 02:06:08 fetching recursive dependency github.com/rwcarlsen/goexif/exif
2016/03/21 02:06:11 fetching recursive dependency github.com/rwcarlsen/goexif/tiff
2016/03/21 02:06:25 fetching recursive dependency go4.org/ctxutil
2016/03/21 02:06:28 fetching recursive dependency go4.org/jsonconfig
2016/03/21 02:06:31 fetching recursive dependency go4.org/errorutil
2016/03/21 02:06:34 fetching recursive dependency go4.org/legal
2016/03/21 02:06:38 fetching recursive dependency go4.org/strutil
2016/03/21 02:06:40 fetching recursive dependency go4.org/syncutil
2016/03/21 02:06:42 fetching recursive dependency go4.org/types
2016/03/21 02:06:44 fetching recursive dependency go4.org/wkfs
2016/03/21 02:06:46 fetching recursive dependency golang.org/x/image/draw
2016/03/21 02:06:51 fetching recursive dependency golang.org/x/image/math/f64
2016/03/21 02:06:54 fetching recursive dependency golang.org/x/image/tiff
2016/03/21 02:06:58 fetching recursive dependency golang.org/x/net/context
2016/03/21 02:07:01 fetching recursive dependency golang.org/x/net/http2
2016/03/21 02:07:03 fetching recursive dependency golang.org/x/oauth2
2016/03/21 02:07:04 fetching recursive dependency google.golang.org/cloud/compute/metadata
2016/03/21 02:07:07 fetching recursive dependency google.golang.org/cloud/internal

This is not as simple as detecting the vendoring and skipping the fetch, as the vendor folder might be higher in the tree than the subpackage being copied, and so not included in the copy.

Fails to import packages with ignored names even if directly referenced

Vendored Prometheus:

gvt fetch github.com/prometheus/client_golang/prometheus
2016/05/31 13:26:31 Fetching: github.com/prometheus/client_golang/prometheus
2016/05/31 13:26:34 · Fetching recursive dependency: github.com/beorn7/perks/quantile
2016/05/31 13:26:36 · Fetching recursive dependency: github.com/prometheus/procfs
2016/05/31 13:26:39 · Fetching recursive dependency: github.com/prometheus/common/expfmt
2016/05/31 13:26:41 ·· Fetching recursive dependency: github.com/matttproud/golang_protobuf_extensions/pbutil
2016/05/31 13:26:44 ··· Fetching recursive dependency: github.com/golang/protobuf/proto
2016/05/31 13:26:44 ··· Deleting existing subpackage to prevent overlap: github.com/golang/protobuf/proto/testdata
2016/05/31 13:26:47 ···· Fetching recursive dependency: github.com/golang/protobuf/ptypes/any
2016/05/31 13:26:47 ··· Fetching recursive dependency: github.com/matttproud/golang_protobuf_extensions/testdata
2016/05/31 13:26:47 ·· Fetching recursive dependency: github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg
2016/05/31 13:26:47 ·· Fetching recursive dependency: github.com/prometheus/common/model
2016/05/31 13:26:47 ·· Fetching recursive dependency: github.com/prometheus/client_model/go

This line:

2016/05/31 13:26:44 ··· Fetching recursive dependency: github.com/golang/protobuf/proto

Vendors this: https://github.com/golang/protobuf

If you were to try and build your vendored code you would get (something similar to):

vendor/github.com/golang/protobuf/proto/proto3_proto/proto3.pb.go:22:8: cannot find package "github.com/golang/protobuf/proto/testdata" in any of:
    /vendor/github.com/golang/protobuf/proto/testdata (vendor tree)
    /go/src/github.com/golang/protobuf/proto/testdata (from $GOROOT)
    /github.com/golang/protobuf/proto/testdata (from $GOPATH)

The reason being, this file:
https://github.com/golang/protobuf/blob/master/proto/proto3_proto/proto3.pb.go

Is committed to git and imports:

import testdata "github.com/golang/protobuf/proto/testdata"

But that directory is never vendored.

suggestion / idea

gvt is nice and simple to use, which is the point

The other thing i need to do is handle binary dependencies, that need to be shared etc.
with git there is the ability to do that.
But i think later it might be worth dong it with S3 and minio.

Here are my 2 bash scripts that do it, so show the idea

Merge DOWN:


# minio (for s3)
go get -u github.com/minio/mc

# Get binary tools

LOCAL=$GOPATH"/src/bitbucket.org/XXX/toolbin/"
REMOTE=s3/appdif-dev-toolbin

echo "LOCAL: " $LOCAL
echo "REMOTE: " $REMOTE

echo "Doing a Difference of Local against Remote ..."
mc diff $REMOTE $LOCAL 

read -n1 -r -p "Press 'y' to start mirror with Remote (S3) ? " key

if [ "$key" = 'y' ]; then
    # `y´´ pressed, do something..
    echo ""
    echo "Mirroring files from REMOTE down to LOCAL"
    mc mirror --force --remove $REMOTE  $LOCAL 
else
    # Anything else pressed, do whatever else.
    echo ""
    echo "No action taken."
fi

Merge UP:


# minio (this pushes it into the golang bin, and so accessable on terminal)
go get -u github.com/minio/mc

# Get binary tools

LOCAL=$GOPATH"/src/bitbucket.org/XXX/toolbin/"
REMOTE=s3/appdif-dev-toolbin/

echo "LOCAL: " $LOCAL
echo "REMOTE: " $REMOTE


#echo "# ls LOCAL"
#ls -l $LOCAL

#echo "# ls REMOTE"
#mc ls $REMOTE

echo "Doing DIff of Local against Remote ..."
mc diff $LOCAL $REMOTE

read -n1 -r -p "Press 'y' to start mirror with Remote (S3) ? " key

if [ "$key" = 'y' ]; then
    # `y´´ pressed, do something..
    echo ""
    echo "# Mirroring up to REMOTE, and deleting any files on Remote(S3) that are not on local."
    mc mirror --force --remove $LOCAL $REMOTE 
else
    # Anything else pressed, do whatever else.
    echo ""
    echo "No action taken."
fi

The Other idea is to watch for changes in external repos, based on your vendor list.
shurcooL has been writing a few tools for this. This is one of then.
go get -u github.com/shurcooL/gostatus

Some thing like the 2 ideas above might be cool. Might be overkill too.

question on vendor path

With a project layout like this:

project
├── bin
├── pkg
├── src
│   ├── foobar

If I step into project and do gvt fetch github.com/some/dep it generates the manifest and puts it here, as a sibling of project/src:

project
├── bin
├── pkg
├── src
│   ├── foobar
└── vendor
    ├── github.com
    └── manifest

That's just like the gb.io project layout -- which makes some sense b/c you said you modeled it after gb's vendor plugin. But I'm having a helluva time getting the standard go compiler to understand this is where vendor lives. It seems to want it not as a sibling of src but as a child of src.

The go version I am using: go version go1.6.2 darwin/amd64

If I try to build the project, it immediately complains that it cannot find the vendored code. Here's an example where it cannot find the aws-sdk-go library:

$go build src/foobar/main.go 
src/utilities/keyval.go:10:2: cannot find package "github.com/aws/aws-sdk-go/aws" in any of:
    /usr/local/Cellar/go/1.6.2/libexec/src/github.com/aws/aws-sdk-go/aws (from $GOROOT)
    /Users/davisford/git/project/foobar/src/github.com/aws/aws-sdk-go/aws (from $GOPATH)

NOTE here it is not even looking in vendor...with go 1.6 it is supposed to by default. I have the old env variable enabled also just for kicks. see the change below where it does look for vendor and reports it in the stack:

$ echo $GO15VENDOREXPERIMENT 
1

Now, if I just create an empty folder project/src/vendor....

$mkdir src/vendor
$ go build src/foobar/main.go
src/utilities/keyval.go:10:2: cannot find package "github.com/aws/aws-sdk-go/aws" in any of:
    /Users/davisford/git/project/foobar/src/vendor/github.com/aws/aws-sdk-go/aws (vendor tree)
    /usr/local/Cellar/go/1.6.2/libexec/src/github.com/aws/aws-sdk-go/aws (from $GOROOT)
    /Users/davisford/git/project/foobar/src/github.com/aws/aws-sdk-go/aws (from $GOPATH)

Of course it isn't found, b/c I just created an empty directory, but just the presence of src/vendor causes it to look, whereas if I have vendor/ as a sibling it doesn't even try.

If I do this:

~/go/project$ mv vendor/ src/

and build it works.

So, my question is how are you getting your projects to work? By default gvt seems to put the vendor dir as a sibling of the project's $GOPATH/src, but the go compiler seems to want vendor as a child of $GOPATH/src/

Does not pick up packages for different OSes

If I am fetching a package which has implementation_unix.go and implementation_windows.go, and each of implementations uses different subpackages (let's say golang.org/x/sys/windows and golang.org/x/sys/unix), the recursive fetcher only fetches the dependencies for the OS I am running fetch on.

gvt update -all. Can it output what it does please ?

For tooling reasons i need output from it as part of my ci pipeline.

At the moment its silent.

Also would it be possible to add a flag to get it to output pure JSON ? this woudl make tooling easier again because i can then parse it.

Does not pick up internal packages

Audrius@Audrius foo $ gvt fetch golang.org/x/text/unicode/norm
2016/04/17 14:54:34 fetching recursive dependency golang.org/x/text/transform
Audrius@Audrius foo $ cat ./vendor/golang.org/x/text/unicode/norm/maketables.go | grep internal
        "golang.org/x/text/internal/gen"
        "golang.org/x/text/internal/triegen"
        "golang.org/x/text/internal/ucd"
Audrius@Audrius foo $ ls ./vendor/golang.org/x/text/internal
ls: cannot access ./vendor/golang.org/x/text/internal: No such file or directory

Create an "imports" command

Per our discussion on twitter, I proposed creating a new command which would allow the user to vendor third-party dependencies in an existing project without needing to run "gvt fetch" for each.

Command Details

Name: imports
Flags:

  • no-recurse - don't recursively fetch dependencies
  • precaire - allow insecure protocols

Usage: imports [-precaire] [-no-recurse]
Description: Scan the project's source files for third-party imports and fetch/add them to the manifest file if they do not already exist.

Notes

Both flags have the same usage as in the existing fetchcommand. The current problem that exists is this tool only reads strictly from the manifest file (as does gb-vendor). I think that the go/ast package an be utilized on *.go files in the project directory (recursively) to get all imports. Logic for determining imports that need to be fetch'd can be referenced from the go get command here (see the download func).

That same logic could also be used for extending the normal fetch command to support repositories which do not have a manifest file.

Feature Req: Show a progress indicator/verbose output when TTY

Calling gvt update -all (or similar) doesn't provide any indicator of progress.

In a CI or scripted environment, this is fine, but when connected to a TTY it'd be 'nice' to have a small progress indicator and status output by default. That could be something as simple as a spinning % and line output, or something approaching npm indicating download progress (likely overkill).

gvt delete doesn't remove recursive dependencies

I did gvt fetch github.com/nstogner/httpware and it also fetched 'github.com/Sirupsen/logrus' but then when I did gvt delete github.com/nstogner/httpware the logrus dependency was still intact. Is this the way its supposed to be?

recent gvt pulls in unused dependencies

gvt has been working great for us, but a recent update causes it to pull in far more dependencies recursively than it should.

For example, older gvt:

$ gvt fetch github.com/aws/aws-sdk-go/service/elb
2016/05/31 14:50:24 fetching recursive dependency github.com/aws/aws-sdk-go/aws
2016/05/31 14:50:25 fetching recursive dependency github.com/aws/aws-sdk-go/private/protocol/query
2016/05/31 14:50:26 fetching recursive dependency github.com/aws/aws-sdk-go/private/protocol
2016/05/31 14:50:27 fetching recursive dependency github.com/aws/aws-sdk-go/private/signer/v4
2016/05/31 14:50:28 fetching recursive dependency github.com/aws/aws-sdk-go/private/waiter
2016/05/31 14:50:28 fetching recursive dependency github.com/go-ini/ini
2016/05/31 14:50:30 fetching recursive dependency github.com/jmespath/go-jmespath

Most recent gvt:

$ gvt fetch github.com/aws/aws-sdk-go/service/elb
2016/05/31 14:52:34 Fetching: github.com/aws/aws-sdk-go/service/elb
2016/05/31 14:52:39 · Fetching recursive dependency: github.com/aws/aws-sdk-go/aws/client
2016/05/31 14:52:39 ·· Fetching recursive dependency: github.com/aws/aws-sdk-go/aws
2016/05/31 14:52:39 ··· Fetching recursive dependency: github.com/aws/aws-sdk-go/awstesting/unit
2016/05/31 14:52:39 ··· Fetching recursive dependency: github.com/aws/aws-sdk-go/vendor/github.com/go-ini/ini
2016/05/31 14:52:39 ···· Fetching recursive dependency: github.com/smartystreets/goconvey/convey
2016/05/31 14:52:45 ····· Fetching recursive dependency: github.com/smartystreets/assertions
2016/05/31 14:52:47 ······ Fetching recursive dependency: golang.org/x/net/context
2016/05/31 14:52:48 ····· Fetching recursive dependency: github.com/jtolds/gls
2016/05/31 14:52:49 ······ Fetching recursive dependency: github.com/gopherjs/gopherjs/js
2016/05/31 14:52:51 ··· Fetching recursive dependency: github.com/aws/aws-sdk-go/service/sts
2016/05/31 14:52:51 ···· Skipping (existing): github.com/stretchr/testify/assert
2016/05/31 14:52:51 ···· Fetching recursive dependency: github.com/aws/aws-sdk-go/private/signer/v4
2016/05/31 14:52:51 ····· Fetching recursive dependency: github.com/aws/aws-sdk-go/private/protocol/rest
2016/05/31 14:52:51 ····· Fetching recursive dependency: github.com/aws/aws-sdk-go/service/s3
2016/05/31 14:52:51 ······ Skipping (existing): github.com/stretchr/testify/assert
2016/05/31 14:52:51 ······ Fetching recursive dependency: github.com/aws/aws-sdk-go/private/waiter
2016/05/31 14:52:51 ······· Fetching recursive dependency: github.com/aws/aws-sdk-go/awstesting
2016/05/31 14:52:51 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/iam
2016/05/31 14:52:51 ········· Fetching recursive dependency: github.com/aws/aws-sdk-go/private/protocol/query
2016/05/31 14:52:51 ·········· Fetching recursive dependency: github.com/aws/aws-sdk-go/private/util
2016/05/31 14:52:51 ··········· Fetching recursive dependency: github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil
2016/05/31 14:52:51 ············ Fetching recursive dependency: github.com/aws/aws-sdk-go/private/protocol
2016/05/31 14:52:51 ············· Fetching recursive dependency: github.com/aws/aws-sdk-go/service/cloudfront
2016/05/31 14:52:51 ·············· Skipping (existing): github.com/stretchr/testify/assert
2016/05/31 14:52:51 ············· Fetching recursive dependency: github.com/aws/aws-sdk-go/service/dynamodb
2016/05/31 14:52:51 ·············· Skipping (existing): github.com/stretchr/testify/assert
2016/05/31 14:52:51 ············· Fetching recursive dependency: github.com/aws/aws-sdk-go/service/elastictranscoder
2016/05/31 14:52:51 ············· Fetching recursive dependency: github.com/aws/aws-sdk-go/service/ec2
2016/05/31 14:52:51 ·············· Skipping (existing): github.com/stretchr/testify/assert
2016/05/31 14:52:51 ·············· Fetching recursive dependency: github.com/aws/aws-sdk-go/private/endpoints
2016/05/31 14:52:51 ··············· Skipping (existing): github.com/stretchr/testify/assert
2016/05/31 14:52:51 ············· Skipping (existing): github.com/stretchr/testify/assert
2016/05/31 14:52:51 ·········· Skipping (existing): github.com/stretchr/testify/assert
2016/05/31 14:52:51 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/sqs
2016/05/31 14:52:51 ········· Skipping (existing): github.com/stretchr/testify/assert
2016/05/31 14:52:51 ········ Skipping (existing): github.com/stretchr/testify/assert
2016/05/31 14:52:51 ········ Fetching recursive dependency: github.com/lsegal/gucumber
2016/05/31 14:52:53 ········· Skipping (existing): github.com/stretchr/testify/assert
2016/05/31 14:52:53 ········· Fetching recursive dependency: github.com/shiena/ansicolor
2016/05/31 14:52:54 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/apigateway
2016/05/31 14:52:54 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/glacier
2016/05/31 14:52:54 ········· Skipping (existing): github.com/stretchr/testify/assert
2016/05/31 14:52:54 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/cloudtrail
2016/05/31 14:52:54 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/cognitosync
2016/05/31 14:52:54 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/configservice
2016/05/31 14:52:54 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/ssm
2016/05/31 14:52:54 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/elasticache
2016/05/31 14:52:54 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/kinesis
2016/05/31 14:52:54 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/opsworks
2016/05/31 14:52:54 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/cloudhsm
2016/05/31 14:52:54 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/codedeploy
2016/05/31 14:52:54 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/directoryservice
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/emr
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/iot
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/workspaces
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/cloudwatchevents
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/inspector
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/acm
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/directconnect
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/lambda
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/iotdataplane
2016/05/31 14:52:55 ········· Skipping (existing): github.com/stretchr/testify/assert
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/elasticsearchservice
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/swf
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/route53
2016/05/31 14:52:55 ········· Skipping (existing): github.com/stretchr/testify/assert
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/support
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/datapipeline
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/waf
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/cloudsearchdomain
2016/05/31 14:52:55 ········· Skipping (existing): github.com/stretchr/testify/assert
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/applicationdiscoveryservice
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/cognitoidentity
2016/05/31 14:52:55 ········· Skipping (existing): github.com/stretchr/testify/assert
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/firehose
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/marketplacecommerceanalytics
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/machinelearning
2016/05/31 14:52:55 ········· Skipping (existing): github.com/stretchr/testify/assert
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/mobileanalytics
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/ecs
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/kms
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/cloudsearch
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/cloudwatchlogs
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/codecommit
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/simpledb
2016/05/31 14:52:55 ········· Skipping (existing): github.com/stretchr/testify/assert
2016/05/31 14:52:55 ········· Fetching recursive dependency: github.com/aws/aws-sdk-go/private/signer/v2
2016/05/31 14:52:55 ·········· Skipping (existing): github.com/stretchr/testify/assert
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/elasticbeanstalk
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/ses
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/storagegateway
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/autoscaling
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/cloudformation
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/rds
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/redshift
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/cloudwatch
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/codepipeline
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/devicefarm
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/dynamodbstreams
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/efs
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/ecr
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/sns
2016/05/31 14:52:55 ········ Fetching recursive dependency: github.com/aws/aws-sdk-go/service/route53domains
2016/05/31 14:52:55 ······· Skipping (existing): github.com/stretchr/testify/assert
2016/05/31 14:52:55 ······ Fetching recursive dependency: github.com/stretchr/testify/require
2016/05/31 14:52:57 ······· Skipping (existing): github.com/stretchr/testify/assert
2016/05/31 14:52:57 ····· Skipping (existing): github.com/stretchr/testify/assert
2016/05/31 14:52:57 ··· Skipping (existing): github.com/stretchr/testify/assert
2016/05/31 14:52:57 ··· Fetching recursive dependency: github.com/aws/aws-sdk-go/vendor/github.com/jmespath/go-jmespath
2016/05/31 14:52:57 ···· Skipping (existing): github.com/stretchr/testify/assert

It pulls in the entire aws sdk now.

question. pulling repos that are already pulled ?

When i pull from a github account where one repo references another, does gvt not pull the referenced repo ?

I guess it depends ?
If the first repo is using go vendoring, and it has the vendored package in its own vendored tree does it pull it ?

I am trying to work out the behaviour.

Don't break on mismatched package statements in subpackages

Been trying this out.
Works great so far. Really like it.

When i hit the usual no buildable source code error, it tells me with the normal way.
Maybe you can also detect the same thing, and give a better message. At the moment its a bit cryptic.

x-MacBook-Pro:backend apple$ gvt fetch github.com/gin-gonic/contrib
2016/04/26 18:39:03 command "fetch" failed: loadPackage("/Users/apple/workspace/go/src/bitbucket.org/apparently_different/backend/vendor/github.com/gin-gonic/contrib/sessions/examples", "github.com/gin-gonic/contrib/sessions/examples"): found packages maincookie (example_cookie.go) and mainredis (example_redis.go) in /Users/apple/workspace/go/src/bitbucket.org/apparently_different/backend/vendor/github.com/gin-gonic/contrib/sessions/examples

But traditional way:

x-MacBook-Pro:backend apple$ go get github.com/gin-gonic/contrib
can't load package: package github.com/gin-gonic/contrib: no buildable Go source files in /Users/apple/workspace/go/src/github.com/gin-gonic/contrib

update can introduce unvendored dependencies

The update command will download a new version of a single package. However this new version might have new dependencies, which end up not being vendored.

By default update should download any new missing packages. It should however probably not update the entire recursive dependency tree, unless asked (see #6). If this introduces conflicts, they are for the human to fix.

support to vendor packages custom file extensions

gvt fetch works great with -t config option to get all tests and testdata. However, not all packages are designed with test data to be in testdata directory and I`d like to pass in a custom list of file extensions and/or paths that gvt should treat as "relevantFile" and vendor.

I use a package that has some test config data in yaml files and i`d like to vendor those in for the tests to pass. I have another use case with a go package using python plugins i.e go package ships with some python files that need to be vendored too. I believe my use cases are a bit unusual, but it would be great if gvt can support those.

Ability to vendor a fork of a package

I have forks of particular packages that have new features but are not yet merged with the official repositories. Since the import paths of these packages are exactly the same as the official ones and only the repository path would be different, I tried to import the origin and then update the repository paths manually in the manifest file. When running gvt update I see the repository paths being rewritten to the original repository URL so no luck.

Would be great if we can temporarily vendor forks using the gvt command line tool so we don't have to wait on the main repositories to merge the requests.

gvt issues warning when run in $GOPATH/src folder

Using a vendor directory in the GOPATH src dir (e.g. $GOPATH/src/vendor) generates a warning every time you run gvt (but it works fine).

jboelter@jboelter-ubuntu:~/xxx/gosrc/src
> gvt
2016/06/10 17:57:40 WARNING: for go vendoring to work your project needs to be somewhere under $GOPATH/src/
gvt, a simple go vendoring tool based on gb-vendor.

gvt removes /tmp directory

When I use gvt in Mac OS it works fine. But when I try to use it in docker container with Linux, gvt removes my $TMPDIR folder and then falls with error:

root@a3c98e82b487:/app# gvt fetch github.com/gorilla/mux
2016/02/12 09:47:19 fetching recursive dependency github.com/gorilla/context
2016/02/12 09:47:20 command "fetch" failed: mkdir /tmp/gvt-643984416: no such file or directory

If I use non-root user I get permission error

user@366435ab33cc:/app$ gvt fetch github.com/gorilla/mux
2016/02/12 09:48:53 command "fetch" failed: remove /tmp: permission denied

How can I use gvt in Linux?

Add purge command to detect unused vendor dependencies

I just updated my project and I no longer need one of the dependencies under the vendor/ directory since it's no longer imported. Is there a way to detect and/or remove vendor deps that are no longer needed?

Maybe something as simple as enhancing the gvt list output to show the dependencies grouped in two sections to call out the ones that aren't used by the code anywhere.

interrupting fetch causes invalid state

If you hit Ctrl-C during one of the recursive dependency fetches of, say, gvt fetch github.com/spf13/hugo, the hugo dependency will be added to the manifest, but not all of the the dependencies required to do so will be. Then, when you go to run gvt fetch github.com/spf13/hugo again, you'll get an error about it already being in the manifest.

It'd be nice if interrupting a fetch didn't cause this kind of invalid state to occur, and instead only updated the manifest with what had been successfully downloaded.

Overlapping parent and sub-package are not correctly handled

A manifest like this will have undefined behavior

        {
            "importpath": "github.com/syndtr/goleveldb",
            "repository": "https://github.com/syndtr/goleveldb",
            "revision": "917f41c560270110ceb73c5b38be2a9127387071",
            "branch": "master"
        },
        {
            "importpath": "github.com/syndtr/goleveldb/leveldb",
            "repository": "https://github.com/syndtr/goleveldb",
            "revision": "ad0d8b2ab58a55ed5c58073aa46451d5e1ca1280",
            "branch": "master",
            "path": "/leveldb"
        },

This would be solved by #28 but the #28 fix will have to be off for existing manifests.

Delete tests?

Hi!

gvt works absolutely great, but one issue I have (with the vendoring thing in general) is that go test ./... runs all the vendored tests, as well. See this golang issue: golang/go#11659

It makes sense technically, but is still surprising and unergonomic. It looks like other tools, like govendor work around this by filtering out the test files when it pulls in dependencies. I wonder if that approach might work for gvt?

Restore fails

Get the following error when trying to restore from vendor/manifest

$ go version
go version go1.6 darwin/amd64
$ gvt restore
2016/04/16 16:26:34 fetching github.com/andrewrynhard/go-mask 
2016/04/16 16:26:34 fetching golang.org/x/crypto/ssh/terminal 
2016/04/16 16:26:34 fetching golang.org/x/crypto/cast5 
2016/04/16 16:26:34 fetching golang.org/x/crypto/openpgp 
2016/04/16 16:26:34 fetching github.com/codegangsta/cli 
2016/04/16 16:26:34 fetching github.com/libgit2/git2go 
2016/04/16 16:26:34 fetching golang.org/x/crypto/openpgp/armor 
2016/04/16 16:26:34 fetching golang.org/x/crypto/openpgp/packet 
2016/04/16 16:26:37 fetching gopkg.in/yaml.v2 
2016/04/16 16:26:37 golang.org/x/crypto/openpgp: dependency could not be deleted: remove /Users/andrewrynhard/Desktop/go/src/github.com/autonomy/alterant/vendor/golang.org/x/crypto/openpgp/packet: directory not empty
2016/04/16 16:26:44 command "restore" failed: failed to fetch 1 dependencies

MANIFEST:

{
    "version": 0,
    "dependencies": [
        {
            "importpath": "github.com/andrewrynhard/go-mask",
            "repository": "https://github.com/andrewrynhard/go-mask",
            "vcs": "git",
            "revision": "6d3ea05f56fa3bd7328b44ac5caf4359423edaf2",
            "branch": "master",
            "notests": true
        },
        {
            "importpath": "github.com/codegangsta/cli",
            "repository": "https://github.com/codegangsta/cli",
            "vcs": "git",
            "revision": "71f57d300dd6a780ac1856c005c4b518cfd498ec",
            "branch": "master",
            "notests": true
        },
        {
            "importpath": "github.com/libgit2/git2go",
            "repository": "https://github.com/libgit2/git2go",
            "vcs": "git",
            "revision": "95793ac11dbca2f35770c690d9ba7e64d7018815",
            "branch": "master",
            "notests": true
        },
        {
            "importpath": "golang.org/x/crypto/cast5",
            "repository": "https://go.googlesource.com/crypto",
            "vcs": "git",
            "revision": "1777f3ba8c1fed80fcaec3317e3aaa4f627764d2",
            "branch": "master",
            "path": "/cast5",
            "notests": true
        },
        {
            "importpath": "golang.org/x/crypto/openpgp",
            "repository": "https://go.googlesource.com/crypto",
            "vcs": "git",
            "revision": "1777f3ba8c1fed80fcaec3317e3aaa4f627764d2",
            "branch": "master",
            "path": "/openpgp",
            "notests": true
        },
        {
            "importpath": "golang.org/x/crypto/openpgp/armor",
            "repository": "https://go.googlesource.com/crypto",
            "vcs": "git",
            "revision": "1777f3ba8c1fed80fcaec3317e3aaa4f627764d2",
            "branch": "master",
            "path": "/openpgp/armor",
            "notests": true
        },
        {
            "importpath": "golang.org/x/crypto/openpgp/packet",
            "repository": "https://go.googlesource.com/crypto",
            "vcs": "git",
            "revision": "1777f3ba8c1fed80fcaec3317e3aaa4f627764d2",
            "branch": "master",
            "path": "/openpgp/packet",
            "notests": true
        },
        {
            "importpath": "golang.org/x/crypto/ssh/terminal",
            "repository": "https://go.googlesource.com/crypto",
            "vcs": "git",
            "revision": "1777f3ba8c1fed80fcaec3317e3aaa4f627764d2",
            "branch": "master",
            "path": "/ssh/terminal",
            "notests": true
        },
        {
            "importpath": "gopkg.in/yaml.v2",
            "repository": "https://gopkg.in/yaml.v2",
            "vcs": "git",
            "revision": "a83829b6f1293c91addabc89d0571c246397bbf4",
            "branch": "master",
            "notests": true
        }
    ]
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.