2015-05-19 110 views
0

我有一个私人的git仓库(回购'私人'),其中有一堆文件 我经常编辑。其中一些文件发布在网站上。每次我做一个小小的更改时,更新这些文件是令人乏味的 。我因此想到了 以下列方式使用git子模块:我创建了第二个(现在是公用的)git 存储库('public'),并放入网站上显示的所有文件。然后 网站提供这些文件在“公​​共”中的链接。一旦我在'private'中编辑 文件中的一个,这些文件也处于“公共”状态,“公开”中的更改将为 (通过简单的git命令),因此文件更改将在网站上可见 。我的问题是:git子模块:哪个存储库应该被用作'子模块'?

1)这是一个很好的方法来处理这个问题?

2)我读到git submodule update --remote --merge但我仍然不是100% 知道这是否更新子模块的主要项目或 完全相反的变化。我经常看到解释 中使用的“上游”工作,但找不到确切的定义。

3)如果子模块主要用于在一个更新的主要项目 在子模块的变化感,我会那么必须创建“私人” 存储库作为子模块和“公”的一个作为主要项目? (因为我 想从内部“公共”跟踪更改为“私人”)

[我想我还留着这些问题在一个单一的岗位,因为他们是非常相关的。]

回答

1

使用子模块增加了相当有点复杂。

似乎有一个单一的存储库,有一个目录'私人'和一个目录'公共'将更容易。目录'public'可以包含'private'文件的符号链接。

这将允许您有2种类型的文件,但避免了子模块的复杂性。

另一个选择是让你的编译系统处理这个问题:只有一个目录包含所有文件,并有一个Makefile目标,它将公共文件复制到另一个目录。

+0

嗨,感谢您的帮助。事实上,“子模块”会造成另一个复杂程度。但是使用我使用的git服务器不可能在同一个项目中同时拥有公共和私有子文件夹。而且,符号链接不起作用(如果您有两个不同的项目),只需提交本地正确但远程无意义的相对路径并找不到文件。我最终在第二个(公共)存储库中使用了硬链接。这对一些测试文件起作用,还没有尝试过“大规模”。 [我接受你的回答,因为它引导我走向正确的方向] –