将代码和数据保存在单独的存储库中的优缺点

max*_*max 6 mercurial development-environment dvcs

我们有一个项目,其中包含数据和代码,捆绑到一个Mercurial存储库中.数据与代码一样重要(它包含业务逻辑,一些输入等的参数)但是,数据文件的格式很少变化,并且很自然地独立于代码更改数据文件.

统一存储库的一个优点是我们不必跟踪多个修订:如果我们需要重新创建先前运行的输出,我们只需要将系统更新为存储在输出日志中的单个修订版号.

一个缺点是,如果我们在多个磁头处于活动状态时修改数据,我们可能会丢失数据更改,除非我们手动将这些更改复制到每个磁头.

将代码和数据拆分为单独的存储库是否还有其他优缺点?

Von*_*onC 1

多个存储库

  • 优点

    • 基于组件的方法(您确定可以彼此独立发展的文件组)
    • 配置规范:您列出系统正常工作所需的参考(此处为“修订版”)。如果您想修改一个部分而不更改另一部分,则可以更新该列表。
    • 部分克隆:如果您不需要所有组件,则只能克隆您想要的组件(不适用于您的情况)
  • 缺点

    • 配置管理:您需要跟踪该配置(通常通过父存储库,注册子存储库
    • 在您的情况下,数据非常依赖于项目的某些版本(您可以拥有对于项目的旧版本没有意义的新数据)

一个仓库

  • 优点
    • 基于系统的方法:您将模块视为一个系统(项目和数据)。
    • 回购管理:一体化
    • 模块之间的紧密联系(这对数据有意义)
  • 缺点
    • 数据传播(正如您提到的,当多个 HEAD 处于活动状态时)
    • 中间修订(不是为了反映新功能,而是因为某些数据发生了变化)
    • 更大的克隆(此处不相关,除非您的数据包含大型二进制文件)

对于不经常更改的非二进制数据,我仍然会将它们保留在同一个存储库中。