默认情况下,如果无法找到对GOPATH的依赖关系,Go会通过获取master(github)或默认(mercurial)中的最新版本来提取导入的依赖项.虽然这个工作流程很容易掌握,但严格控制却变得有些困难.由于所有软件更改都会带来一些风险,因此我希望以可管理且可重复的方式降低此潜在更改的风险,并避免无意中获取依赖项的更改,尤其是在通过CI服务器运行干净构建或准备部署时.
什么是我可以锁定(即锁定或捕获)包依赖的最有效方式,所以我发现自己无法重现旧包,或者更糟糕的是,当我即将发布时意外破坏?
----更新----
关于当前包装状态的其他信息.虽然我最终(截至7.20.13)捕获第三方文件夹中的依赖项并管理更新(ala Camlistore),但我仍然在寻找更好的方法......
此外,请务必查看go 1.5供应商/实验,以了解在未来版本中如何处理该问题.
我正在Vagrant guest precision64框中运行GAE dev服务器,具有以下网络设置(在我的Vagrantfile中):
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.network :forwarded_port, guest: 8080, host: 9090
end
Run Code Online (Sandbox Code Playgroud)
它的作用是什么:
[default] Forwarding ports...
[default] -- 8080 => 9090 (adapter 1)
Run Code Online (Sandbox Code Playgroud)
我使用以下命令启动App Engine服务器:
goapp serve
Run Code Online (Sandbox Code Playgroud)
要么
dev_appserver.py myappfolder
Run Code Online (Sandbox Code Playgroud)
这会按预期启动app engine dev服务器:
INFO 2013-11-22 dispatcher.py] Starting module running at: http://localhost:8080
Run Code Online (Sandbox Code Playgroud)
在所有情况下,我都能够成功进入Vagrant客户并卷曲localhost:8080.
不幸的是,从主机我无法在运行GAE开发Web服务器时从localhost:9090获得响应.另外,我已经确保我没有任何干扰主机上的端口9090.此外,我几乎肯定这与Vagrant无关,因为我在8080上启动了一个快速的node.js网络服务器,并且能够从主机到达它.我错过了什么?!!!