¿Cómo organizar un proyecto Go con dependencies vendorizadas?

Estoy trabajando en un proyecto Go que no es un package sino un service. Depende de mgo , entre otras cosas. Debido a que se supone legalmente que este service tiene una versión segura y está altamente disponible, tomamos la decisión de comercializar la dependencia de mgo dentro del proyecto. Debido a los requisitos legales, no podemos confiar únicamente en extraer la versión de origin/master para la dependencia.

Obviamente, esto rompe nuestro GOPATH para todos los commands estándar, ya que no está viviendo bajo GOPATH sino en un directory de vendor dentro del repository de Git:

 ~/src/link_tracker/ main.go main_test.go vendor/ src/ labix.org/ etc... 

Actualmente estamos trabajando en esto usando un script Bash bastante feo que destruye muchas variables de entorno y hace algunos enlaces simbólicos, pero estaría bien si pudiéramos consolidar todo esto bajo un Makefile o similar.

¿Cuál es la mejor / correcta forma de organizar esto sin perder nuestra dependencia específicamente versionada de mgo ?

Deberías usar https://github.com/kr/godep para resolver este problema, ahora es muy estable, lo que debes tener en count es que tu código debe estar en un repository (git, svn, mercurial, entre otros).

Las dos herramientas con las que he estado jugando (para objectives similares) son:

Probablemente deberías ver si puedes usar uno de ellos en lugar de tirar el tuyo. En el caso particular de las cosas de labix.org, johnny-deps parece requerir que las cosas sean alojadas en git.