在目录中包含不同git存储库的部分内容

时间:2014-01-04 13:03:38

标签: git github repository

我有n个存储库,其中包含我希望在我的服务器目录中提供的内容。将动态扫描服务器目录以查找用于处理该内容的内容。

但是,我想保留我想要导入的存储库。我不想合并或执行任何单向任务。源存储库确实应该保持独立。

当我在我的服务器目录上git pull时,我想更新我订阅的所有文件。请注意,它不一定是git pull,但您可以了解我的意思。

它应该是这样的(有更多的文件和存储库,它只是一个例子):

- github
    - repo 1 with 10 files
    - repo 2 with 5 files
- server
    - content-directory
          - 2 files "subscribed" out of repo 1
          - 1 file "subscribed" out of repo 2

github存储库的更改应该在我执行git pull之后立即应用于服务器目录文件。

有一种简单的方法吗?

我的方法:在content-directory中创建这些存储库的克隆但是我会获得整个存储库,尽管我只需要一些文件。 .gitignore阻止上传,但不会阻止上传

也许已经有一种我不知道的好方法。

1 个答案:

答案 0 :(得分:3)

据我所知,没有本机Git功能,但您可以使用symlinks获得所需的结果,这些结果可在POSIX系统上使用also on Windows with NTFS

我将在这里假设一个Linux系统。

在您的内容目录之外的某处检查您的存储库:

$ cd /some/directory/repos
$ git checkout https://github.com/user/repo-a.git
$ git checkout https://github.com/user/repo-b.git
$ ls
repo-a/ repo-b/

现在,将您想要的文件从每个存储库链接到服务器的内容目录:

$ cd /path/to/server/content/directory
$ ln -s /some/directory/repos/repo-a/file1 .
$ ln -s /some/directory/repos/repo-a/file2 .
$ ln -s /some/directory/repos/repo-b/file1 file1b

文件显示在目录中,但如果您使用长列表(-l),您可以看到它们确实是指向其他文件的链接:

$ ls
file1 file1b file2
$ ls -l
file1 -> /some/directory/repos/repo-a/file1
file1b -> /some/directory/repos/repo-b/file1
file2 -> /some/directory/repos/repo-a/file2