1

项目布局:

/project_a
   /shared
/project_b
   /shared
/shared

project_a 和 project_b 都需要包含共享文件夹。使用 svn,我们使用 svn:externalsand 效果很好,因为 svn 可以引用子目录(也可以使用相对路径)。但是,我们转移到了 git,它似乎不支持签出子目录。

我们现在的解决方案是将project_a、project_b和shared都放在不同的git repos中,并在project_a和project_b中使用git子模块。然而,这似乎比一个带有 svn:externals 的单一 svn 存储库要复杂得多。处理git中常见元素的正确方法是什么?

编辑:共识是子模块是要走的路。但是用了一天,感觉用起来很不友好。

在对共享文件进行更改后,我必须:

  1. 提交共享中的更改
  2. 推动份额变化
  3. 在父目录中再次添加共享目录
  4. 推送父目录

与 svn 中的单个提交相比,这似乎要复杂得多。缺少其中一个步骤会导致版本控制混乱。我在这里错过了什么吗?

4

1 回答 1

1

子模块是正确的答案。

您不保留 SVN 的整体方法这一事实几乎是通过 DVCS 设计的(您在其中标记和引用存储库作为all)。

这允许您引用精确的配置(参见子模块的真实性质),即您将始终引用精确的 SHA1 引用(与svn external不同,您没有义务指出修订号)。

于 2010-04-19T07:48:08.813 回答