代码之家  ›  专栏  ›  技术社区  ›  rellocs wood

如果Go项目包将托管在不同的repos(github和sourceforge),如何组织它

go
  •  1
  • rellocs wood  · 技术社区  · 7 年前

    假设我想创建一个项目并在Github上托管它,我 不得不 创建这样的项目结构

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

    而且在 主.go ,我必须将导入内容写为:

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

    现在我还想将这个项目宿主在sourceforge上,我应该复制整个项目并修改路径吗??似乎不够好。还有别的办法吗?我需要的只是在下面创建我的项目 钢骨混凝土 文件夹,可以按我的意愿托管到任何repo,而不更改包。

    1 回复  |  直到 7 年前
        1
  •  1
  •   eugenioy    7 年前

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

    如果您不打算让其他项目“导入”您自己的项目(这是,如果您正在实现一个应用程序而不是一个库),那么您可能会避免引用 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/ 页面,您应该用这样的标题响应:

    <meta name="go-import" content="myproject.io git https://github.com/user/myproject">
    

    然后,如果决定离开Github,则更改返回的头段。

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

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