GIT 将资源共享到多个存储库
GIT share resource into multiple repositories
我们目前有一个环境,其中多个存储库包含相同的文件,我们正在尝试 'export' 以便对文件的更新不会迫使我们更新每个存储库。
以下是我们所需设置的抽象布局,我们基本上有一个文件夹 'share',它提供了一个应该包含在远程其他项目中的包。
local:
+---1
| 1.txt
+---2
| 2.txt
+---3
| 3.txt
\---share
\---somepackage
somefile.txt
remote:
+---1
| | 1.txt
| \---somepackage
| somefile.txt
+---2
| | 2.txt
| \---somepackage
| somefile.txt
\---3
| 3.txt
\---somepackage
somefile.txt
推送到远程时,共享文件应包含在每个存储库中。对共享文件夹的更改应应用于每个共享存储库(最好的情况是立即,最坏的情况是推送到远程)。
我们使用 windows 作为我们的开发环境,但是推送的存储库将由运行每个存储库的 linux 系统使用,如果相关的话。
我们考虑过使用符号链接,但根据 this SO post 硬链接不受 git 管理,软链接不会具有我们想要的功能。 post 已经很老了,适用于 linux 开发环境,所以我很好奇是否有这方面的变化,是否可以应用于 windows.
据我所知,最好的解决方案是创建一个像 "post-merge" (mentiond in the same SO post) 这样的脚本,将文件从存储库外部拉入存储库,然后推送到远程回购。如果我必须给它一个名字,那将使它成为一个 "pre-push" 钩子。
我目前正在独自解决这个问题,对 git 不是很了解,但肯定有其他更优雅的解决方案可以解决这个问题。
正常的解决方案涉及 git submodule
combined with the command git submodule update --remote
在每个存储库 1、2、3
中执行
这样:
- 您将新提交从
shared
存储库推送到其上游存储库
- 您在每个存储库 1、2、3 中执行
git submodule update --remote
,然后添加、提交和推送。
- 这 1、2、3 个存储库的任何克隆都将包括上一步中记录的最后共享提交,在
shared
子文件夹中(假设共享包括多个包,而不仅仅是 somepackage
).
如果您需要 1/somepackage
而不是 1/shared/somepackage
,则需要将符号链接添加到您的 1、2、3 存储库(因为符号链接已得到妥善管理)
我们目前有一个环境,其中多个存储库包含相同的文件,我们正在尝试 'export' 以便对文件的更新不会迫使我们更新每个存储库。
以下是我们所需设置的抽象布局,我们基本上有一个文件夹 'share',它提供了一个应该包含在远程其他项目中的包。
local:
+---1
| 1.txt
+---2
| 2.txt
+---3
| 3.txt
\---share
\---somepackage
somefile.txt
remote:
+---1
| | 1.txt
| \---somepackage
| somefile.txt
+---2
| | 2.txt
| \---somepackage
| somefile.txt
\---3
| 3.txt
\---somepackage
somefile.txt
推送到远程时,共享文件应包含在每个存储库中。对共享文件夹的更改应应用于每个共享存储库(最好的情况是立即,最坏的情况是推送到远程)。
我们使用 windows 作为我们的开发环境,但是推送的存储库将由运行每个存储库的 linux 系统使用,如果相关的话。
我们考虑过使用符号链接,但根据 this SO post 硬链接不受 git 管理,软链接不会具有我们想要的功能。 post 已经很老了,适用于 linux 开发环境,所以我很好奇是否有这方面的变化,是否可以应用于 windows.
据我所知,最好的解决方案是创建一个像 "post-merge" (mentiond in the same SO post) 这样的脚本,将文件从存储库外部拉入存储库,然后推送到远程回购。如果我必须给它一个名字,那将使它成为一个 "pre-push" 钩子。
我目前正在独自解决这个问题,对 git 不是很了解,但肯定有其他更优雅的解决方案可以解决这个问题。
正常的解决方案涉及 git submodule
combined with the command git submodule update --remote
在每个存储库 1、2、3
这样:
- 您将新提交从
shared
存储库推送到其上游存储库 - 您在每个存储库 1、2、3 中执行
git submodule update --remote
,然后添加、提交和推送。 - 这 1、2、3 个存储库的任何克隆都将包括上一步中记录的最后共享提交,在
shared
子文件夹中(假设共享包括多个包,而不仅仅是somepackage
).
如果您需要 1/somepackage
而不是 1/shared/somepackage
,则需要将符号链接添加到您的 1、2、3 存储库(因为符号链接已得到妥善管理)