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

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

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

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

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

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

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

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

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