【问题标题】:Git equivalent of file externals in svnGit相当于svn中的文件外部
【发布时间】:2015-02-26 12:50:47
【问题描述】:

是否有 git 等效于 svn 文件外部 或任何其他方式来在 git 中模拟文件外部

背景:我们有一个共同的项目,我们部分地参考了其他项目。

使用 git 子模块 - 据我所知 - 只能引用存储库 - 但不能引用单个子文件夹或文件。

我们基本上需要一个支持svn等外部的分布式版本控制系统。

似乎 git 没有提供我们需要的东西。我对吗?请证明我错了。


详情:

我们有一个相当大的 svn 存储库,其中包含多个项目。每个子项目都依赖于基础项目。但是每个子项目只需要基础项目中的某些文件或文件夹 - 取决于子项目。因此,我们利用带有和不带有修订号的文件和文件夹外部来解决这些依赖关系。

基础项目具有以下结构:

BASE
- libs
-- dll1.dll
- doc
-- howto.doc
- maps.csv
- cols.csv
- misc.ini
- fun.png

子项目使用这样的外部引用基础项目:

"Base/libs@27" inspect
"Base/doc" doc
"Base/calibration/map.csv@14" map/default.csv
"Base/calibration/cols.csv@56" cols/default.csv

【问题讨论】:

  • 我想你的要求也在这里讨论过:stackoverflow.com/questions/571232/…
  • 其他帖子中没有提到文件外部。但似乎子树合并和子模块是唯一接近外部的选项。
  • 先生。 Herzog,您能否用一些有关您如何使用svn 文件外部的详细信息来更新您的问题?我从未见过 Git 无法实现颠覆的情况,所以我认为我们或许能够找到一种方法来使用 Git 解决您的问题。
  • 我也在寻找这个问题的答案。一个例子是两个项目需要共享目录中的一些文件,但其他项目是专门针对每个项目的。一种解决方案是重组项目,但当您寻求低成本和快速迁移时,这无济于事,并且所涉及的一些项目实际上已被冻结。

标签: git file svn external


【解决方案1】:

Git 子模块的替代方案是 Git Subtrees,它看起来就像您正在寻找的一样。

更多信息http://git-scm.com/book/en/v1/Git-Tools-Subtree-Merging

【讨论】:

    【解决方案2】:

    我还没有找到一个干净的解决方案,但有很多解决方法。

    最干净的方法似乎是将 Base 全部包含在辅助位置,使用子模块或子树合并,然后在各个文件上使用符号链接将其放在您实际需要使用它们的位置。

    这似乎不太干净,特别是包含不同版本的 Base 以满足您的“有和没有修订号”要求可能会变得非常混乱,但我还没有看到一个干净的替代方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      • 1970-01-01
      • 2012-06-02
      • 1970-01-01
      相关资源
      最近更新 更多