如何组织GO项目包(如果它将托管在不同的仓库中)(GitHub和SourceForge)

时间:2018-07-19 01:53:58

标签: go

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

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

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

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

现在我还想将此项目托管到SourceForge上,是否应该复制整个项目并修改路径?似乎还不够好。还有其他方法吗?我需要的只是在 src 文件夹下创建我的项目,并且可以根据需要将其托管到任何存储库中,而无需更改软件包。

1 个答案:

答案 0 :(得分:1)

如果开发的是应用而不是库

如果您不打算让其他项目“导入”您自己的项目(也就是说,如果您正在实现的是应用程序而不是库),则有可能避免引用任何{{1} }在您的本地路径中。

注意:这不是推荐的方法,但是从我的测试来看,它确实有效,如果您以此方式进行结构化,则可以编译,运行和测试代码。

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

github.com

然后您可以像这样导入:

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

然后您可以在任何位置托管import "myproject/util/fileutil" 文件夹的内容,而无需更改项目文件中的路径。

如果要开发库

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

您可以使用myproject标签创建“虚荣”导入路径,例如myproject.io/...,如下所述:

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

这样,当meta工具查询您的go页面时,您应该使用这样的标题进行响应:

myproject.io/

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

请注意,如果您要避免需要使用<meta name="go-import" content="myproject.io git https://github.com/user/myproject"> 规范中所述的技术,这不会阻止用户直接从github导入您的项目:

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