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

2016-02-04 14:46:42 +08:00
 morefreeze

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

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

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

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

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

我们项目用 JPA 都会生成 Metadata models ,这些都是编译时产生的,不会加入 GIT
liboyue
2016-02-05 13:39:14 +08:00
make 的时候先生成 pb 文件就行了吧,这东西不用入库
Arthur2e5
2016-02-05 16:27:56 +08:00
@morefreeze billlee 说的那句话是对的。
tianxiaqu123
2016-02-05 21:27:06 +08:00
有人搞过 php 方面的 pb
c4pt0r
2016-02-06 08:42:51 +08:00
可以试试 submoudle

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/255376

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX