现在,我们使用Perforce进行版本控制。它有一个很方便的特性——严格递增的变更号码,我们可以用它来引用构建,例如:“如果您的构建至少为44902,则会获得错误修复”。
我想切换到使用分布式系统(可能是Git)以使分支和在家工作更容易(这两者在Perforce中完全可行,但Git工作流具有某些优点)。因此,尽管“支流开发”将是分布式的,并且不涉及常见的版本序列,我们仍将维护一个主Git仓库,在创建构建之前,所有更改都需要进入该仓库。
如何保留严格递增的构建ID?我能想到的最直接的方法是,每当主仓库更新时触发某种后提交挂钩,并将新树对象(或提交对象?我对Git还不熟悉)的哈希值注册到一个集中式数据库中,该数据库分配ID(我说“数据库”,但我可能会使用Git标签来执行此操作,并查找下一个可用的标签号码或类似物。因此,“数据库”实际上将是.git/refs/tags/build-id/)。
这是可行的,但我想知道是否有更简单、已实现或标准/“最佳实践”的方法来实现这一点。