Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows GIT将资源共享到多个存储库中_Windows_Git_Version Control_Symlink - Fatal编程技术网

Windows GIT将资源共享到多个存储库中

Windows GIT将资源共享到多个存储库中,windows,git,version-control,symlink,Windows,Git,Version Control,Symlink,我们目前有一个环境,其中多个存储库包含相同的文件,我们正在尝试“导出”这些文件,以便对文件的更新不会迫使我们更新每个存储库 下面是我们所需设置的抽象布局,我们基本上有一个文件夹“共享”,它提供了一个包,该包应该包含在远程服务器上的其他项目中 local: +---1 | 1.txt +---2 | 2.txt +---3 | 3.txt \---share \---somepackage somefile.txt 当推送到远程

我们目前有一个环境,其中多个存储库包含相同的文件,我们正在尝试“导出”这些文件,以便对文件的更新不会迫使我们更新每个存储库

下面是我们所需设置的抽象布局,我们基本上有一个文件夹“共享”,它提供了一个包,该包应该包含在远程服务器上的其他项目中

local:
+---1
|       1.txt
+---2
|       2.txt
+---3
|       3.txt
\---share
    \---somepackage
            somefile.txt
当推送到远程时,共享文件应包含在每个存储库中。对共享文件夹的更改应应用于每个共享存储库(最好的情况是立即更改,最坏的情况是推送到远程存储库)

我们使用windows作为开发环境,但推送存储库将由运行每个存储库的linux系统使用(如果相关的话)

我们曾考虑过使用符号链接,但根据git的说法,硬链接不是由git管理的,软链接也没有我们想要的功能。这篇文章很老,适用于linux开发环境,所以我很好奇这方面是否有变化,是否可以应用于windows

据我所知,最好的解决方案是创建一个类似“post merge”(后期合并)的脚本,将文件从repo外部拉入repo,然后推入远程repo。如果我必须给它起个名字的话,它将成为一个“预推”钩子


我目前正在独自处理这个问题,对git不是很精通,但肯定还有其他更优雅的解决方案来解决这个问题。

正常的解决方案包括结合在每个存储库1、2、3中执行的命令

这样:

  • 您可以将新提交从
    共享
    存储库推送到其上游存储库
  • 在每个存储库1、2、3中执行
    git子模块更新--remote
    ,然后添加、提交和推送
  • 这1、2、3个存储库的任何克隆都将在
    shared
    子文件夹中包含上一步记录的最后一次共享提交(假设共享包括多个包,而不仅仅是
    somepackage

如果您需要
1/somepackage
而不是
1/shared/somepackage
,则需要将符号链接添加到1、2、3存储库中(因为符号链接得到了正确的管理)

我并不完全清楚您想要的工作流,但子模块可能是您想要使用的。
remote:
+---1
|   |   1.txt
|   \---somepackage
|           somefile.txt
+---2
|   |   2.txt
|   \---somepackage
|           somefile.txt
\---3
    |   3.txt
    \---somepackage
            somefile.txt