我已经开始研究一个新的Perl模块了,我已经决定要制作它的Ruby版本(一旦我完成了Perl版本)。人们是否倾向于为每种语言制作单独的存储库?或者将它们放在同一个存储库中?
我可以很容易地看到这两组代码是如何不同的,以便被视为单独的项目。但与此同时,它是用两种语言编写的相同功能,因此从这个角度看,它似乎是一个带有两个语言端口的单个项目。
在这种情况下,最佳做法是什么?
FWIW,我正在使用git。
编辑:我在这里应该更清楚。这些不是git submodules
意义上的模块。它们是将提交给CPAN和RubyGems的模块。该项目的用户可能会通过cpan
或gem
进行安装,然后以正常方式使用/要求它。
答案 0 :(得分:1)
在我小组的研究过程中,我们有一些回购,其中一些有不同的技术。我们通过研究问题和结账仅对我们正在处理的项目进行拆分,其中repos具有统一的层级目录结构,对于所有项目都是相同的。由于我们已经知道repo目录结构,因此运行脚本和查找数据变得更加容易。
我建议采用相同的方法。两种技术之间的划分越高,就越容易为其中一种技术做出贡献而不会被另一种技术的存在所困惑。
最后问问自己:如果我要添加另一种语言,我还能将它保存在一个回购中吗?如果答案是肯定的,继续做你正在做的事。如果没有,请将这些库保存在两个单独的存储库中,并明确管理项目和贡献者。
答案 1 :(得分:0)
我在这种情况下的经验是为每个模块设置2个较小的git repos,并将一个分支克隆到消费者项目repo中使其变得非常简单。另一种方法是从模块的repo创建一个裸克隆到消费者项目仓库,然后在每个模块的开发过程中不断更新它。消费者项目应该忽略注入的回购。
一旦其他开发人员克隆了模块A和/或B,他/她就可以在权限允许的情况下推送到消费者项目。这可能是赞成还是取决于。