首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >去别工作/从别的地方去

去别工作/从别的地方去
EN

Stack Overflow用户
提问于 2016-09-16 10:46:33
回答 2查看 8.8K关注 0票数 0

我正在尝试go get一个最初托管在已失效/不可用的A.com服务器上的项目。相同的项目现在在B.com下服务,但是代码中的所有导入都指向A.com (例如。import A.com/user/projet/lib)。

当我尝试go get B.com/user/projet时,它是从B.com克隆git,然后尝试从A.com下载资源。

如何告诉go get,包A.com/user/projet现在在B.com/user/projet上服务(无需在代码中重写导入)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-16 13:38:47

还有一个没人提到的肮脏技巧--在维护人员自己重写导入之前,在$GOPATH/src/A.com/package中手动编写git clonegit pull包。go buildgo install按预期工作。这一次我做的是快速攻击。

票数 2
EN

Stack Overflow用户

发布于 2016-09-16 12:22:09

这很难做到。

正如我和@jimb之前所建议的那样,重写路径会更容易。然而,有一些事情你可以做。

当导入路径不是已知代码宿主站点时

文本是命令go help importpath的输出。

如果导入路径不是已知的代码托管站点,并且也缺乏版本控制限定符,则go工具将尝试通过https/ <head>获取导入,并在文档的<head>中查找一个<head>标记。

元标记具有以下形式:

代码语言:javascript
复制
<meta name="go-import" content="import-prefix vcs repo-root">

运行go help importpath获取完整信息。

这一切意味着什么

基本上,这意味着您可以使用旧的导入地址导入代码库,但它将从meta tag提供的存储库中克隆。

但是,您需要原始的位置来使用该meta tag托管页面。

不理想

但戈朗团队已经知道要使用的例子见以下例子。

代码语言:javascript
复制
$ curl golang.org/x/tools/cmd/rename
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="go-import" content="golang.org/x/tools git https://go.googlesource.com/tools">
<meta name="go-source" content="golang.org/x/tools https://github.com/golang/tools/ https://github.com/golang/tools/tree/master{/dir} https://github.com/golang/tools/blob/master{/dir}/{file}#L{line}">
<meta http-equiv="refresh" content="0; url=https://godoc.org/golang.org/x/tools/cmd/rename">
</head>
<body>
Nothing to see here; <a href="https://godoc.org/golang.org/x/tools/cmd/rename">move along</a>.
</body>
</html>

go-import元标记告诉go get从哪里获取它,以及源代码要在哪里浏览的go-source

请参阅下面一篇关于这一特性的有用文章。

Golang正则导入路径

其他更有问题的伎俩

代理和/或宿主文件条目

其他非常肮脏的技巧是代理所讨论的服务器(使用类似于nginx和主机条目的东西),或者只使用主机文件将url指向新位置,但是每次克隆时,您都需要有该主机条目。

不推荐

用git子模块提供包和技巧

另一种选择是在源存储库中提供包,这样go get就不会再次尝试导入包,并且它将忽略您在gopath上拥有的内容。

如果将包作为子模块添加到存储库中到新位置,那么仍然可以将这两个代码库分开,但是由于导入的包将位于供应商文件夹中,go get将不会尝试导入任何内容。

在我看来,如果你不能做go get元标签,那就比两个坏处小。

我建议您看看git sub-tree作为git sub-modules的替代方案。他们很酷,也更容易处理。

我希望这能帮到你。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39529593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档