【发布时间】:2021-06-05 14:33:06
【问题描述】:
我有以下无法解决的问题:
我的本地机器上有两个版本控制的目录。一个是dirA,它拥有我的很多东西,是一个我不想分享的私人回购。另一个是dirB,一个小型的public repo,里面有我想要分享的文件,主要是给别人克隆和拉取,所有的变化都是我自己做的。
问题是dirB 保存的文件都来自dirA,它基本上是dirA 的一个子集,尽管它有另一种结构。
每当我对dirA 中也在dirB 中的文件进行更改时,我想更新dirB,然后将更新后的文件推送到公共存储库。
我尝试使用rsync 和unison,但每次更新我提到的特定文件时都必须手动操作,效率不高。我收集了 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 也会在本地更新,然后它也会被推送到远程。
我怎样才能做到这一点?
谢谢。
【问题讨论】:
-
如何在您的目录 A 中的文件的目录 B 中创建符号链接。每当更新 A 的文件时,它们应该自动更新其 B 对应文件
-
符号链接对我不起作用,它只是指向文件在
dirA中的位置。所以当我将dirB推送到 gitlab 时,我只得到一堆链接而不是实际文件。 -
您是否尝试仅创建硬链接。我相信它们也应该同步,并且实际文件会被推送到您的仓库,而不仅仅是简单的链接。
-
最初我认为它不起作用,因为我认为它没有指向同一个inode。我刚刚尝试过,但它似乎可以工作!
-
@AsifKamranMalick 好吧,我做了一些检查,似乎一旦我的 PDF 是从 LaTex 编译的并且确实存在,那么使用硬链接就可以了!这解决了我的大部分问题,谢谢!
标签: git version-control gitlab git-submodules githooks