Go 去不工作/去其他地方
我正在尝试Go 去不工作/去其他地方,go,Go,我正在尝试获取一个项目,该项目最初托管在一个不可用的a.com服务器上。 同一项目现在在B.com下提供,但代码内的所有导入都指向A.com(例如import A.com/user/projet/lib) 当我尝试获取B.com/user/projet时,它是从B.com克隆git repo,然后尝试从A.com下载资源 如何判断go-get包A.com/user/projet现在在B.com/user/projet上提供(不在代码内部重写导入)?这很难做到 正如我和@jimb之前所建议的,重新
获取一个项目,该项目最初托管在一个不可用的a.com
服务器上。
同一项目现在在B.com
下提供,但代码内的所有导入都指向A.com
(例如import A.com/user/projet/lib
)
当我尝试获取B.com/user/projet
时,它是从B.com
克隆git repo,然后尝试从A.com
下载资源
如何判断go-get
包A.com/user/projet
现在在B.com/user/projet
上提供(不在代码内部重写导入)?这很难做到
正如我和@jimb之前所建议的,重新编写路径会更容易。然而,你可以做一些事情
当导入路径不是已知代码宿主站点时
文本是命令go-help-importpath
如果导入路径不是已知的代码宿主站点,并且缺少
版本控制限定符,go工具尝试获取导入
并在文档的HTML中查找
标记
meta标记的形式如下:
<meta name="go-import" content="import-prefix vcs repo-root">
go-import
meta标记告诉go-get
从何处获取,以及go-source
源代码的浏览位置
请参阅下面一篇关于此功能的有用文章
其他更值得怀疑的把戏
代理和/或主机文件条目
其他非常肮脏的技巧是代理问题中的服务器(使用类似nginx和主机条目的东西),或者只使用主机文件将url指向新位置,但每次克隆时都需要有该主机条目
不推荐
通过git子模块提供包和技巧
另一种选择是在源存储库中提供包,这样go get
将不再尝试导入包,并且它将忽略您在gopath
上的任何内容
如果将包作为子模块添加到存储库中的新位置,您仍然可以将两个代码库分开,但由于导入的包将位于供应商文件夹中,因此go-get
将永远不会尝试导入任何内容
在我看来,如果你不能做go-get
meta标记,那么两个坏处就比较小了
我建议您看看git子树
,作为git子模块
的替代方案。他们很酷,也很容易对付
- 有关git子模块的更多信息,请访问:
- 有关git子树的更多信息,请访问:
我希望这能有所帮助。这很难做到
正如我和@jimb之前所建议的,重新编写路径会更容易。然而,你可以做一些事情
当导入路径不是已知代码宿主站点时
文本是命令go-help-importpath
如果导入路径不是已知的代码宿主站点,并且缺少
版本控制限定符,go工具尝试获取导入
并在文档的HTML中查找
标记
meta标记的形式如下:
<meta name="go-import" content="import-prefix vcs repo-root">
go-import
meta标记告诉go-get
从何处获取,以及go-source
源代码的浏览位置
请参阅下面一篇关于此功能的有用文章
其他更值得怀疑的把戏
代理和/或主机文件条目
其他非常肮脏的技巧是代理问题中的服务器(使用类似nginx和主机条目的东西),或者只使用主机文件将url指向新位置,但每次克隆时都需要有该主机条目
不推荐
通过git子模块提供包和技巧
另一种选择是在源存储库中提供包,这样go get
将不再尝试导入包,并且它将忽略您在gopath
上的任何内容
如果将包作为子模块添加到存储库中的新位置,您仍然可以将两个代码库分开,但由于导入的包将位于供应商文件夹中,因此go-get
将永远不会尝试导入任何内容
在我看来,如果你不能做go-get
meta标记,那么两个坏处就比较小了
我建议您看看git子树
,作为git子模块
的替代方案。他们很酷,也很容易对付
- 有关git子模块的更多信息,请访问:
- 有关git子树的更多信息,请访问:
我希望这会有所帮助。还有另一个没人提到的肮脏把戏-在维护者自己重写导入之前,手动git clone
,git pull
package,在$GOPATH/src/A.com/package中<代码>开始构建
,开始安装
按预期工作。这一次我做的是快速破解。还有另一个没人提到的肮脏把戏-手动git clone
,git pull
package在$GOPATH/src/A.com/package中,在维护者自己重写导入之前<代码>开始构建,开始安装
按预期工作。我这一次做得很快。你不能。你需要重写import语句。事实上,你必须重写那里的语句。你可以做一些肮脏的把戏,但没有一个是正确的recommended@Cerber:代码已经被破坏,因此将其分叉到您自己的回购协议并重写导入可能不是那么不合理。重写导入并不难,有一些工具比sed更容易实现。这就是说,如果您不想更改它,只需将它放在供应商/
目录中,然后处理它。@JimB我理解这一点,但因为我不是维护者