如何自动更新作为另一个 directory/repo 子集的 directory/repo?

How can automatically update a directory/repo which is a subset of another directory/repo?

我有以下无法解决的问题:

我的本地机器上有两个版本控制目录。一个是 dirA,它包含我的很多东西,是一个我不想分享的私人仓库。另一个是dirB,一个小的public repo,里面有我确实想分享的文件,主要是供其他人克隆和拉取,更改全部来自我。

问题是 dirB 包含所有来自 dirA 的文件,它基本上是 dirA 的子集,尽管它有另一个结构。

每当我更改 dirA 以及 dirB 中的 文件时,我想更新 dirB 和然后将更新后的文件推送到 public 仓库。

我尝试使用 rsyncunison,但每次更新我提到的特定文件时我都必须手动执行,效率不高。我收集了 git 个子模块或钩子可以帮助我,但我不明白我应该使用什么工具。

实质上,我有:

dirA/ (larger private repo with my stuff)
|
|--- file1
|
|--- file2
.
.
.--- fileN

dirB/ (public repo that I want to update only when the relevant files from dirA are updated)
|
|--- SubjectA/
|       |
|       |--- file3
|
|--- SubjectB/
        |
        |--- file11
.
.

理想情况下,当我在本地更新 dirA 并推送到远程时,dirB 也会在本地更新,然后也会推送到远程。

我怎样才能做到这一点?

谢谢。

由于您的要求是保持文件同步并且能够推送真实文件(不是普通的 links)您可以简单地为感兴趣的文件创建硬links。

您可以创建硬 link,如下所示:

ln <src-file-path> <path-to-the-link>

这应该为您的文件创建一个硬文件link,原始文件中的任何更改都会反映在新创建的文件中并推送到存储库会产生一个真正的文件,而不是 link。

注意: 确保您没有提供 -s 开关,因为它会创建一个软 link。