V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
Immortal
V2EX  ›  Go 编程语言

关于 Go Modules 团队开发时候私有库的问题

  •  
  •   Immortal · 2019-09-16 15:38:06 +08:00 · 5489 次点击
    这是一个创建于 1903 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景:公司有两个私有项目放在私有 git 上,这里叫 A 和 B,A 项目有引用 B 的包

    有两个问题请教下大家:
    1、go mod 会自动下载最新 tag 的代码,如果没有会自动引入最新的 master 提交,这样没问题。但是有 tag 的情况下只会引入 tag,没法引用最新的代码(如果 B 有改动必须打 Tag ?)
    2、上面的问题可以用 replace 的方案解决,但是如果团队开发,大家的 gopath 都不一致,go mod 文件会有多份,如何解决?

    谢谢大家

    第 1 条附言  ·  2019-09-16 17:08:57 +08:00

    有解决方案了:

    谢谢大家的帮助

    12 条回复    2019-09-17 14:02:49 +08:00
    janxin
        1
    janxin  
       2019-09-16 15:47:48 +08:00 via iPhone
    1. 可以指定 git commit
    2. 团队开发在一个机器下面?多份怎么理解呢?
    mcfog
        2
    mcfog  
       2019-09-16 15:50:28 +08:00
    1. go get REPO_URL@master
    2. replace 到相对路径或者另一个 URL 都可以
    Immortal
        3
    Immortal  
    OP
       2019-09-16 15:54:09 +08:00
    @janxin
    1、指定 master 后也会自动更新到最后一个 tag ( tag 代码可能旧于 master,但是他还是会优先 tag )
    2、不是的,是指大家各自配置的 GOPATH,或者说项目在电脑里的路径不一致,我想绝对路径会不一样。后来发现相对路径也行。。最后以相对路径解决了

    谢谢
    Immortal
        4
    Immortal  
    OP
       2019-09-16 15:54:43 +08:00
    @mcfog
    1、会以 tag 优先的
    2、相对路径是对的,另一个 url 又会出现 1 的问题,版本无法保持最新
    janxin
        5
    janxin  
       2019-09-16 16:39:41 +08:00 via iPhone
    @Immortal 使用 git commit checksun 不是 master,另外你 A 仓库是不是没有 go.mod
    Hellert
        7
    Hellert  
       2019-09-16 16:56:19 +08:00
    go get -u github.com/xx/xxxx@master 应该就可以,运行后自动更新 go.mod ,版本号应该是 v0.0.0-date-hash 的形式。
    Immortal
        8
    Immortal  
    OP
       2019-09-16 17:04:01 +08:00
    @janxin
    都有 go.mod ,感觉楼下说的手动 go get 下私有仓库,指定 branch 下载,触发 go mod 自己维护会变成 v0.0.0 xxxxxx 的形式应该是可行的
    Immortal
        9
    Immortal  
    OP
       2019-09-16 17:04:25 +08:00
    @Vegetable
    @Hellert
    是的 手动 get 下 让 go.mod 自动生成
    谢谢两位
    JamesMackerel
        10
    JamesMackerel  
       2019-09-17 00:24:23 +08:00 via iPhone
    因为这个问题,我滚回了 govendor。
    Immortal
        11
    Immortal  
    OP
       2019-09-17 13:46:49 +08:00
    @JamesMackerel 可以尝试下楼上大家说的解决方案哦
    lazyfighter
        12
    lazyfighter  
       2019-09-17 14:02:49 +08:00
    被说蒙蔽了,go mod 不是有版本吗,大家的 gopath 不一样没啥子问题啊,go mod 将 package 缓存在本地,而且有版本,版本定义好不就行吗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2942 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 12:37 · PVG 20:37 · LAX 04:37 · JFK 07:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.