所以我有一些私有git存储库,它们是算法的不同语言实现(Python,Java等).每个实现在功能上都相同,执行相同的步骤并提供相同的输出.目前,这些是分开的回购协议,但如果我不应该他们统一为一个回购协议,与指示语言,如目录,我想知道:
master - java - python - ruby
我可以使用git-repo combine命令来保存历史记录,这不是问题.我对这方面的最佳做法感到好奇.
我有与Mercurial相同的问题,以及我想用C和Python实现的算法(COBS).
最终我决定将其拆分为单独的存储库(即使Python实现包含一个C扩展,它具有与普通C实现类似的代码).我的理由归结为:
我希望有实现的独立版本编号和独立版本.
git describe
是一个很好的功能,可以根据最新的带注释标签识别版本.在存储库中只有一个实现,git describe
使用很简单.但是如果在一个存储库中具有单独版本号的不同实现,则git describe
使用变得更复杂,需要使用该--match
选项来限制具有给定前缀的标签.例如git describe --match "python*"
通常组织Python模块的方式(Python模块打包最佳实践),让我更有意义的是保持Python实现独立和自包含.
在其他条件相同的情况下,我倾向于采用更细粒度的模块化.