我可以拥有一个跨越多个隔离目录的git存储库吗?

时间:2012-03-25 15:33:29

标签: git

我有一个项目,其中包含多个不同目录中的组件,并希望将这些文件夹的内容视为单个git存储库。

例如,我有类似

的东西
  
      
  • 甲   
        
    • 一个
    •   
    • B'/ LI>   
  •   

和其他地方

  
      
  • 1   
        
    • I
    •   
    •   
  •   

并希望将它们合并到一个git存储库中:

  
      
  • 回购   
        
    • A ..
    •   
    • 1 ..
    •   
  •   

我可以用git做这个吗?

3 个答案:

答案 0 :(得分:5)

不,你不能。 Git旨在跟踪单个目录层次结构的内容。简单的解决方案是将所有这些目录移动到一个共同的超级目录中。另一种方法是制作几个repos,然后使用submodules组合它们。

答案 1 :(得分:0)

如果您考虑一下,大多数源代码分发都是这样构建的。也就是说,repo布局不反映部署布局。有在源代码src,这结束了在可被编译build,进而那些伪影像某处安装/usr/bin。可能有一本手册,由不同的工具链组装,并安装在目标系统的其他地方。可能有一个网站,它以完全不同的方式部署到不同的目标系统等。为了管理所有这些,有一套构建和部署脚本,其中一些(愚蠢地)并不总是跟踪与系统的其余部分。

但是,除了作为心理模型之外,如果找不到适合您特定场景的部署工具,这一点都没有多大帮助。

如果您需要构建自己的部署脚本,可以从相当简单的事情开始。由于您提供的背景有限,听起来您可能不需要更多

while read repo path; do
    cd "$path"
    mkdir "$repo"
    cd "$repo"
    git init
    git pull /path/to/repo/"$repo"
done<<____HERE
    A /var/www
    1 /srv
____HERE

答案 2 :(得分:0)

如果'A'和'1'已经拥有自己的git存储库,并且如果你想继续使用这些存储库,那么你唯一的选择是在'repo'中创建一个git存储库,然后添加'A'和'1'作为git子模块。

如果您不关心'A'和'1'中现有的git存储库,那么只需在'repo'中创建一个新的git存储库,并添加'A'和'1'的所有内容。