我们目前正在探索在我们的项目中使用 Thrift。我的问题之一是如何在版本控制(git)中处理 thrift 源文件和特定语言生成的文件?
假设我有使用 java 实现的项目服务器 A,项目 B 是使用 Objective-C 实现的移动应用程序,项目 C 是 thrift 文件。目前我最关心的是将所有项目作为不同的 git 项目,并将项目 C 作为项目 A 和项目 B 的子模块。优点是我们可以拥有一致的 thrift 源,并且我们不需要将生成的源文件放入git 项目。
然后假设我有另一个与项目 C 不同的 thrift 文件,并且仅用于项目 A 和项目 D。我是否也应该将这些文件放入项目 C 中?如果我们将项目 C 中的某些文件放入项目 C 中,项目 B 如何知道项目 C 中的某些文件不适合他?
另一种方法可能是将生成的源文件提交到每个项目中。或者也许是另一种我不知道的方法。
谢谢!
最佳答案
无论是否考虑是否将高度具体的案例中的项目拆分为 Git 子模块,这些都是适用于各种生成代码(包括但不限于 Thrift)的一般准则。
一般规则
- 源文档(IDL、DSL...)属于存储库。
- 任何可以从这些源轻松生成的代码都不能。
异常
与几乎所有规则一样,也有异常(exception)。异常(exception)有多种形式,例如
- 生成的工件不容易生产(无论出于何种原因)
- 生成的代码需要修补程序来解决错误1)
- 等等
附加说明
努力为这些文件提供一个来源,并且只有一个来源(当然不包括分支等)。一个好主意是将其设置为跨项目使用的库。像对待任何其他 3rdparty 模块一样对待该库,包括正确的版本控制等。如果您使用 Git,Git 子模块确实可能是实现这一目标的一种方法。
Then let's say I have another thrift file that differs with project C
如果不同,则要么是完全不同的 IDL,要么是相关 IDL 的不同版本。
1) 在现实世界中,这样的事情可能会发生。不幸的是。
关于version - 如何在版本控制中管理thrift源文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32644420/