This gist is based on the information available at golang/dep, only slightly more terse and annotated with a few notes and links primarily for my own personal benefit. It's public in case this information is helpful to anyone else as well.
I initially advocated Glide for my team and then, more recently, vndr. I've also taken the approach of exerting direct control over what goes into vendor/ in my Dockerfiles, and also work from
isolated GOPATH environments on my system per project to ensure that dependencies are explicitly found under vendor/.
At the end of the day, vendoring (and committing vendor/) is about being in control of your dependencies and being able to achieve reproducible builds. While you can achieve this manually, things that are nice to have in a vendoring tool include:
| CREATE EXTENSION btree_gist; | |
| CREATE TABLE room_reservations ( | |
| room_id integer, | |
| reserved_at timestamptz, | |
| reserved_until timestamptz, | |
| canceled boolean DEFAULT false, | |
| EXCLUDE USING gist ( | |
| room_id WITH =, tstzrange(reserved_at, reserved_until) WITH && | |
| ) WHERE (not canceled) |