英文:
Trying to create a local repo of go.tools that is go get-able
问题
我已经为go cover工具添加了一个新的开关(-xml),用于生成一个可以被Atlassian Clover消费的XML文档,这样我们的go项目在bamboo构建时可以报告简单的覆盖率统计信息。我希望这个本地版本可以通过go get
以下是我尝试过的步骤:
- 设置$GOPATH
- 创建$GOPATH/src/stash.example.com/scm/x
- 进入$GOPATH/src/stash.example.com/scm/x
- git clone --bare https://go.goolesource.com/tools
然后基本上按照https://confluence.atlassian.com/display/STASH/Importing+code+from+an+existing+project#Importingcodefromanexistingproject-ImportanexistingGitprojectintoStash中描述的导入现有git项目到stash的步骤进行操作。
如果我执行'rm -rf tools',然后执行'go get -d stash.example.com/scm/x/tools',我会得到"unrecognized import path stash.example.com/scm/x/tools"的错误。如果我输入'go get -d stash.example.com/scm/x/tools.git'(提供vcs提示给go get),它就可以工作,但生成的子目录名为'test.git'。在路径中提供vcs提示的替代方法是从stash服务器的html中返回一个标签,但我不知道如何创建它。
我应该补充说明的是,'cd $GOPATH/src/stash.example.com/scm/x' + 'git clone http://user@stash.example.com/scm/x/tools.git'会按预期创建tools子目录。
我必须将其托管在防火墙内部的本地服务器上,因此github不是一个选项。有什么建议吗?
英文:
I have added a new switch (-xml) to the go cover tool to generate an XML doc that is consumable by Atlassian clover so the bamboo builds of our go projects can report simple coverage statistics. I would like this local version to be accessible to the build agents using go get <importpath>.
These are the steps I've tried:
- 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
and then basically followed the steps for importing an existing git project into stash as described in https://confluence.atlassian.com/display/STASH/Importing+code+from+an+existing+project#Importingcodefromanexistingproject-ImportanexistingGitprojectintoStash
If I then 'rm -rf tools' followed by 'go get -d stash.example.com/scm/x/tools' I get "unrecognized import path stash.example.com/scm/x/tools". It works if I type 'go get -d stash.example.com/scm/x/tools.git' (providing the vcs hint to go get), but the resulting subdirectory is named 'test.git'. The alternative to providing the vcs hint in the path is to return a <meta> tag in the html from the stash server, but I have no idea how to create that.
I should add that 'cd $GOPATH/src/stash.example.com/scm/x' + 'git clone http://user@stash.example.com/scm/x/tools.git' creates the tools subdirectory as expected.
I must host this on a local server inside my firewall, so github is not an option. Any advice?
答案1
得分: 1
curl http://stash.example.com/scm/x/tools 会返回什么?有哪些服务器正在监听 stash.example.com?通常,一个可以使用 go get 的路径要么包含一个带有后缀的组件,后缀表示所使用的版本控制系统(例如 example.com/repository.git/package),要么在其中一个目录层中存在一个特定的元标签,告诉 go get 从哪里获取源代码。
go get 是一个简单的机制,如果我记得没错的话,当服务器需要身份验证时,它不能与 git 一起使用。
在这里查看有关如何使用 go get 的导入路径的相关文档。我不会引用这个文档,因为它相当长,不太可能消失,并且您可以通过安装 godoc 并运行以下命令在本地机器上检索它:
godoc -http=:8080 # 或其他端口
然后将浏览器指向:
http://localhost:8080/cmd/go/#hdr-Relative_import_paths.
英文:
What does curl http://stash.example.com/scm/x/tools yield? What servers are listening on stash.example.com? Generally, a go get-able path either contains a component with a suffix denoting the revision control system used (e.g. example.com/repository.git/package) or a certain meta-tag exists in one of the directory layers that tells go get where to get the source.
go get is an unsophisticated mechanism and if I recall correctly it doesn't work with git when the server requires authentication.
Have a look here for the relevant documentation on how import paths work with go get. I'm not going to cite out of this as it's rather long, unlikely to go down and you can retrieve it on your local machine by installing godoc and running
godoc -http=:8080 # or some other port
and then pointing your browser to
http://localhost:8080/cmd/go/#hdr-Relative_import_paths.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论