gpt4 book ai didi

Go 工作区问题 : how to differ local packages from remote packages?

转载 作者:IT王子 更新时间:2023-10-29 01:03:08 26 4
gpt4 key购买 nike

我的 gopath 指向 $HOME/go 目录。我有一些我不想在 github 或其他任何地方共享的个人包(目前)。但是,当我尝试使用 go get -u all 更新远程包时,我得到:

# cd /home/go/src/marcio/somePackage; git pull --ff-only
fatal: No remote repository specified. Please, specify either a URL or a
remote name from which new revisions should be fetched.
package code.google.com/p/go.tools/astutil
...
long list of dependencies
...
imports marcio/somePackage: exit status 1

这很令人困惑。我如何告诉 go get 将我维护的包与用作依赖项的包区分开来?为什么 go 工具认为所有内容都必须从远程源获取?


更新:

看起来 Go 工作空间迫使您将依赖项与用户维护的代码混合在一起。这看起来岌岌可危。有时人们想要删除未使用的垃圾包,并冒着删除错误文件夹或未提交内容的风险,以及许多其他问题......有什么方法可以让用户维护的包与远程获取的依赖项分开?

最佳答案

go get -u 旨在通过 VCS 获取更新。如果您想有选择地更新包,则必须使用更具体的标识符。您仍然可以使用 ... 通配符。

例如,这将尝试更新来自 github.com 的所有包:

go get -u github.com/...

但总的来说,我会避免盲目地更新所有内容,因为这会使跟踪依赖项破坏某些东西变得更加困难,因为您当前未使用的不相关项目也会更新它们的依赖项。

更新答案:

虽然您可以使用多个 GOPATH(它们像 PATH 一样以冒号分隔),但不要这样做;它会导致更多的问题而不是帮助。使用单个 GOPATH,更好的是,每个项目使用单个 GOPATH。这样你就可以更新依赖而不会有影响其他项目的风险。您可以查看一些销售工具来帮助解决这个问题(例如 godep)

关于Go 工作区问题 : how to differ local packages from remote packages?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27273588/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com