合并(子模块?)到现有文件夹中

时间:2019-04-05 19:59:48

标签: git

我觉得以前可能已经有人问过这个问题,但是我不能将现有问题完全塞进这个确切的问题中。

我有一个Git存储库,用于存储Sphinx文件并为单个文档构建。我想将该文档中的某些文件(css,徽标等)重用于其他文档,并且理想情况下应与其他文档(例如rst)分开跟踪这些“核心文件”的更改。

我认为做到这一点的一种方法是将“核心”文件拆分到一个单独的Git存储库中,但是我正在努力寻找一种非手动的方式将这些核心文件添加到存储库中。

我当前拥有的文件结构类似于

| Doc repository
 |-- Sphinx
  |- Built docs folder
  |- Reusable components in folders
  | Some files
  | A reusable file

理想情况下,我希望能够分离(然后再次添加)可重复使用的项目。

我尝试了子模块,但是我了解到它们不能用于将文件添加到现有文件夹中,因此无法工作,因为我需要在同一个文件夹中使用reusable file

我一直在研究子树,但是在理解它们是否满足我的要求时遇到了困难。

理想情况下,生成的结构类似于

| Doc repository
 |-- Sphinx
  |- Built docs folder
  | Some files
  | + Some command to add reusable stuff in this same directory

| Reusable repository
 |- Reusable folders
 | Reusable file

1 个答案:

答案 0 :(得分:1)

我知道如何reuse a submodule content coming from the same repo (but different branch),但这始终意味着将所述重用文件放在单独的文件夹中。

仍然,您可以:

  • 声明该子模块以获取可重复使用的文件
  • 在正确的文件夹中添加和版本符号链接(每个可重复使用的文件一个),该链接指向您的其他现有跟踪文件)。
    每个符号链接都将在子模块文件夹中引用其对应的文件。

这是一种解决方法,无法很好地扩展(如果您在子模块存储库中添加或删除文件,则需要在符号链接中进行镜像),但这将达到您的预期。

在理想情况下,那些可重用的文件将由相对URL寻址,该URL包括一个子文件夹名称,这将不需要使用符号链接。