登录
首页 >  Golang >  Go问答

如果 GO 项目包托管在不同的存储库(GitHub 和 SourceForge)上,如何组织它

来源:Golang技术栈

时间:2023-03-04 11:55:04 261浏览 收藏

“纵有疾风来,人生不言弃”,这句话送给正在学习Golang的朋友们,也希望在阅读本文《如果 GO 项目包托管在不同的存储库(GitHub 和 SourceForge)上,如何组织它》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!

问题内容

假设我想创建一个项目并将其托管在 GitHub 上,我必须 创建 这样的项目结构——

src/github.com/user/      
     myproject/
     main.go
     util/
       fileutil.go

main.go 中,我必须将导入写为:

import github.com/user/myproject/util/fileutil

现在我也想把这个项目托管到 SourceForge 上,我应该复制整个项目并修改路径吗?似乎还不够好。有没有其他方法可以做到这一点?我需要的只是在 src 文件夹下创建我的项目,并且可以根据需要托管到任何 repo,而无需更改包。

正确答案

如果开发应用程序而不是库

如果您不打算让其他项目“导入”您自己的项目(也就是说,如果您正在实现应用程序而不是库),那么您可能会避免github.com在本地路径中引用任何内容。

注意:这不是推荐的方法,但从我的测试来看,它确实有效,如果你以这种方式构造它,你可以编译、运行和测试你的代码。

您可以按如下方式创建项目结构:

src/
    myproject/
        main.go
        util/
            fileutil.go

然后你可以像这样导入:

import "myproject/util/fileutil"

然后,您可以在任何地方托管myproject文件夹的内容,而无需更改项目文件中的路径。

如果开发一个库

如果您实际上正在开发一个其他人将能够导入的库,那么它会变得更加复杂,因为这些项目实际上需要一个完整的路径来导入您的项目。

您可以创建一个“虚荣”导入路径,例如myproject.io/...使用meta此处描述的标签:

https://golang.org/cmd/go/#hdr- Remote_import_paths

这样,当go工具查询您的myproject.io/页面时,您应该使用如下标题进行响应:

如果您决定离开 github,然后更改您返回的标头。

请注意,这不会阻止用户直接从 github 导入您的项目,如果您想避免需要使用canonical import path规范中描述的技术:

https://golang.org/doc/go1.4#canonicalimports

今天关于《如果 GO 项目包托管在不同的存储库(GitHub 和 SourceForge)上,如何组织它》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表