version - 如何在版本控制中管理thrift源文件?

标签 version versioning thrift

我们目前正在探索在我们的项目中使用 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)的一般准则。

一般规则

  1. 源文档(IDL、DSL...)属于存储库。
  2. 任何可以从这些源轻松生成的代码都不能。

异常

与几乎所有规则一样,也有异常(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/

相关文章:

c# - 如何在 Visual C# 项目之间同步版本?

facebook - 如何在 Facebook 的开发者面板上更新/升级 Facebook App API 版本?我什至需要这样做?

python - 将执行哪个版本的程序?是/usr/bin 里的还是/usr/local/bin 里的?

java - 部署和提供 Thrift 服务

enums - 使用枚举的节俭常量结构

tfs - 如何在 TFS 中使用 GET 保留文件上的服务器更改时间戳?

c# - 如何通过一次调用 Save 在 NHibernate 中更新一行并自动插入一个新行?

git - 将 svn 分支与旧的未跟踪代码 merge

maven - 如果 child 的 pom 版本与 parent 的聚合器 pom 及其子模块的版本不同,请避免错误的版本插值

c++ - 如何在 Storm 和 Thrift 上使用 C++ spout/bolt 在 Storm 中使用