2010-03-11 21 views
3

我想有一个文件夹中的多个文件,由不同的git存储库管理。可能吗?git回购总是必须在自己的目录

我有一个项目的以下文件夹结构。这是一个Git仓库的一部分:

plugins/ 
- plugin.a.php 
- plugin.b.php 
- plugin.c.php 

我想plugin.b.php是另一个回购的一部分。例如,我想要将这个插件的开发托管在github上。在不同的项目上同时使用和开发。

当我使用一个git子模块plugin.b.php,我需要一个空文件夹,以初始化子模块,所以我有一个结构:

plugins/ 
- plugin.a.php 
newfolder/ 
    - plugin.b.php 
- plugin.c.php 

plugin.b.php将不加载,例如,我的应用程序仅加载plugins/的根文件。而且,我不想修改应用程序。

有没有办法做到这一点?我可以想到很多情况下我想使用类似的工作流程。即使同时有plugin.b.phpplugin.c.php在不同的回购协议。

感谢

回答

2

看一看--git-dir, --work-tree, GIT_DIR and GIT_WORK_TREE
您应该可以在其他地方创建存储库并将其工作目录设置为正常路径。只需将一个文件添加到第二个存储库即可。

+0

这将是完美的。去看看它... – Ross 2010-03-11 12:30:38

+0

@tanascius谢谢。标明你的答案是正确的。使用了不同的解决方案,贴在下面。 – Ross 2010-03-11 14:49:00

2

请参阅@tanascius的答案,它提供了在一个目录中使用多个git repos的正确答案。

我正在回答我自己的问题:问题的例子和GitHub。由于有一个小警告...

这是不可能的pluginb & pluginc有在plugins文件夹同名的文件。尽管这不太可能,但作为github回购,他们都有github自述文件导致conflit。

对于这个低文件数情况我已经解决了使用符号链接(并保持主要回购这是可选的内部回购):

.git/ 
.gitignore = .repos/ 
.repos/ 
    .git/ 
    - pluginb/ 
     README 
     plugin.b.php 
    - pluginc/ 
     README 
     plugin.c.php 
plugins/ 
    - plugin.a.php 
    - symbolic-link = plugin.b.php 
    - symbolic-link = plugin.c.php 
相关问题