Git 正在尝试创建go.tools的本地回购,该回购是go-get-able

Git 正在尝试创建go.tools的本地回购,该回购是go-get-able,git,go,bitbucket-server,Git,Go,Bitbucket Server,我在go cover工具中添加了一个新的开关(-xml),以生成一个可供Atlassian clover使用的xml文档,这样我们的go项目的竹子构建就可以报告简单的覆盖率统计数据。我希望构建代理可以使用go-get访问此本地版本 以下是我尝试过的步骤: - setup $GOPATH - created $GOPATH/src/stash.example.com/scm/x - cd $GOPATH/src/stash.example.com/scm/x - git clone --bare

我在go cover工具中添加了一个新的开关(-xml),以生成一个可供Atlassian clover使用的xml文档,这样我们的go项目的竹子构建就可以报告简单的覆盖率统计数据。我希望构建代理可以使用go-get访问此本地版本

以下是我尝试过的步骤:

- setup $GOPATH
- created $GOPATH/src/stash.example.com/scm/x
- cd $GOPATH/src/stash.example.com/scm/x
- git clone --bare https://go.goolesource.com/tools
然后基本上按照中所述的步骤将现有git项目导入到stash中

如果我在'rm-rf tools'后面加上'go get-d stash.example.com/scm/x/tools',我会得到“无法识别的导入路径stash.example.com/scm/x/tools”。如果我输入'go-get-d stash.example.com/scm/x/tools.git'(提供去获取的vcs提示),它就可以工作,但是生成的子目录名为'test.git'。在路径中提供vcs提示的替代方法是从隐藏服务器返回html中的标记,但我不知道如何创建它

我应该添加“cd$GOPATH/src/stash.example.com/scm/x”+“git clone”按预期创建工具子目录


我必须在防火墙内的本地服务器上托管,所以github不是一个选项。有什么建议吗?

什么是
curlhttp://stash.example.com/scm/x/tools
收益率?哪些服务器正在监听
stash.example.com
?通常,
go-get
-able路径包含一个带有后缀的组件,该后缀表示所使用的版本控制系统(例如
example.com/repository.git/package
),或者某个元标记存在于某个目录层中,该目录层告诉
go-get
从何处获取源代码

go-get
是一种简单的机制,如果我没记错的话,当服务器需要身份验证时,它不适用于git

查看有关导入路径如何与
go-get
配合使用的相关文档。我不打算引用这一点,因为它相当长,不太可能下降,您可以通过安装
godoc
并运行

godoc -http=:8080 # or some other port
然后将浏览器指向

http://localhost:8080/cmd/go/#hdr-Relative_import_paths.

安装到GOROOT中的工具被硬编码到
go
工具中。您不能更改它们的导入路径,否则它们将无法安装到正确的位置。这是相对正确的。在使用本地路径修复工具组件文件中的导入路径后,该工具构建良好。go install将结果放置在$GOPATH/bin中,但将其移动到$GOTOOLDIR是一件简单的事情。在这一点上,新的“go-tool cover-xml=coverage.out”行为工作得很好。感谢您的回复。如果我用curl获得repo,我会得到“来自主机192.168.1.111的无效请求:注意Stash不支持Git的遗留HTTP传输协议。”所以我猜Stash是在看用户代理之类的东西。我查看了您引用的链接,它似乎归结为从stash返回自定义导入路径的meta标记,但我不知道如何做到这一点。有人试图完成同样的事情:@kerlyn尝试将repo放在一个URL中,该URL包含git存储库所在目录中的后缀
.git
。例如,如果repo是
git:example.com/foo.git
,请尝试导入路径,如
example.com/foo.git/package
。这是一个很好的建议,但路径名中仍然以“.git”结尾。不优雅,也不致命。正如我上面所说的,导入路径必须在工具组件文件中固定,并且生成的二进制文件必须移动到正确的位置,但是最终结果可以按照需要工作。@kerlyn如果您不希望导入路径包含
.git
,HTTP服务器需要在导入路径处为页面提供服务。此页面需要包含指向包所在路径的某个元标记(如上所述)。同意,因此问题是是否可以根据上面发布的信息通过隐藏返回此类元标记。