V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
morefreeze
V2EX  ›  git

求助:项目中的 protobuf 及生成的文件在 git 下如何管理?

  •  
  •   morefreeze · 2016-02-04 14:46:42 +08:00 · 4007 次点击
    这是一个创建于 3003 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前状况是这样,我们希望看到.proto 的 diff ,但不希望看到生成文件的不同。
    如果把.gitattribute 中将生成文件认定为 binary ,似乎 merge 时会不去合并生成文件,压根就不管的状态
    如果认定为普通文件,那在 diff 时会出现大段的不同,一是不美观,二是 review 容易翻过,三也让行数的统计变得不准确
    另外想到加 hook 每次生成,但 pb 一个蛋疼问题是新生成的文件即使代码一样,但最后的file_descriptor也会有"少量"不同(这个未验证,但至少我新生成的文件代码没有不同,只有这段不同)

    想问下大家有没有一个两全其美的管理方法?

    我们目前的折中办法是将 pb 的修改包括生成文件单独提交,之后再代码逻辑的修改提交。

    9 条回复    2016-02-06 08:42:51 +08:00
    Arthur2e5
        1
    Arthur2e5  
       2016-02-04 15:22:16 +08:00   ❤️ 1
    所以你想要另开个库放 pb 文件, submodule 进来,不计入代码行数「绩效统计」?
    firefox12
        2
    firefox12  
       2016-02-04 15:31:56 +08:00   ❤️ 2
    pb 生成的 java cpp 文件不要提交。
    在构建的时候,自动导出,

    第一可以防止 pb 文件和 cpp 文件不统一
    第二 可以测试不同 protoc 环境下的兼容问题
    第三 就是解决你的问题
    morefreeze
        3
    morefreeze  
    OP
       2016-02-04 15:59:40 +08:00
    @firefox12
    @Arthur2e5
    两位说的都是好主意觉得 2 楼的更方便些,可以再写个 hook 自动在 merge 后重新生成下 pb 文件以备开发之用
    @Arthur2e5 代码行数主要是 pr 的时候看的,提交一个 3000 行而生成文件就 2000 行 这就有点吓人了
    billlee
        4
    billlee  
       2016-02-04 19:19:26 +08:00
    不要把自动生成的文件纳入版本控制。
    hantsy
        5
    hantsy  
       2016-02-04 20:51:50 +08:00
    这种生成的文件不应该用 GIt 管理。。。目录添加到 gitignore

    我们项目用 JPA 都会生成 Metadata models ,这些都是编译时产生的,不会加入 GIT
    liboyue
        6
    liboyue  
       2016-02-05 13:39:14 +08:00 via Android
    make 的时候先生成 pb 文件就行了吧,这东西不用入库
    Arthur2e5
        7
    Arthur2e5  
       2016-02-05 16:27:56 +08:00
    @morefreeze billlee 说的那句话是对的。
    tianxiaqu123
        8
    tianxiaqu123  
       2016-02-05 21:27:06 +08:00
    有人搞过 php 方面的 pb
    c4pt0r
        9
    c4pt0r  
       2016-02-06 08:42:51 +08:00 via iPhone
    可以试试 submoudle
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3485 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 11:22 · PVG 19:22 · LAX 04:22 · JFK 07:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.