Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.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
在子文件夹中以子模块的形式递归添加git repos_Git_Github_Git Submodules - Fatal编程技术网

在子文件夹中以子模块的形式递归添加git repos

在子文件夹中以子模块的形式递归添加git repos,git,github,git-submodules,Git,Github,Git Submodules,将子文件夹中的git repos递归添加为子模块: 我正在寻找一种解决方案,将git存储库作为子模块添加到git repo文件夹中 我在目标文件夹中已经有了文件夹结构和克隆的存储库。我所需要的只是将这些repo作为子模块自动添加到子文件夹中 有数百种git回购协议,所以我想将其自动化 结构:文件夹1和2用作类别 ~/gitrepo-main/folder1/folder01/submodule ~/gitrepo-main/folder1/folder02/submodule ~/gitrepo

将子文件夹中的git repos递归添加为子模块:

我正在寻找一种解决方案,将git存储库作为子模块添加到git repo文件夹中

我在目标文件夹中已经有了文件夹结构和克隆的存储库。我所需要的只是将这些repo作为子模块自动添加到子文件夹中

有数百种git回购协议,所以我想将其自动化

结构:文件夹1和2用作类别

~/gitrepo-main/folder1/folder01/submodule
~/gitrepo-main/folder1/folder02/submodule
~/gitrepo-main/folder2/folder01/submodule
~/gitrepo-main/folder2/folder02/submodule
编辑:

可能是通过

从gitrepo主文件夹运行脚本

#!/bin/bash
for d in `find folder1/ -maxdepth 3 -mindepth 3 -type d`
do
    pushd $d
    export url=$(git config --get remote.origin.url)
    popd
    git submodule add $url $d
done
我在目标文件夹中已经有了文件夹结构和克隆的存储库

我认为这会是个问题,但确实提到:

是超级项目中克隆子模块的相对位置

  • 如果
    不存在,则通过从命名URL克隆来创建子模块
  • 如果
    确实存在并且已经是一个有效的Git存储库,则将其添加到变更集中而不进行克隆
因此,您需要做的是:

  • (如果这些嵌套回购已添加到父回购中,并在其根目录中添加了一个
    git add.
    done)
  • 或者通过查找父repo中的任何
    .git
    子文件夹来查找所有嵌套的repo
  • 查询每个文件夹中的远程子回购url(
    git remote-v
    )。
    请注意,这些子文件夹中没有“
    cd
    ”,您可以执行以下操作:

    git -C /full/path/of/subrepo remote -v
    
  • 将该路径声明为子模块

    git submodule add -- /remote/url/of/subrepo relative/path/of/subrepo
    
OP提到了“。使用-C语法,将给出:

for d in `find .vim/bundle/ -maxdepth 1 -mindepth 1 -type d`
do
    export url=$(git -C $d config --get remote.origin.url)
    git submodule add $url $d
done
没有更多的pushd/popd

我在目标文件夹中已经有了文件夹结构和克隆的存储库

我认为这会是个问题,但确实提到:

是超级项目中克隆子模块的相对位置

  • 如果
    不存在,则通过从命名URL克隆来创建子模块
  • 如果
    确实存在并且已经是一个有效的Git存储库,则将其添加到变更集中而不进行克隆
因此,您需要做的是:

  • (如果这些嵌套回购已添加到父回购中,并在其根目录中添加了一个
    git add.
    done)
  • 或者通过查找父repo中的任何
    .git
    子文件夹来查找所有嵌套的repo
  • 查询每个文件夹中的远程子回购url(
    git remote-v
    )。
    请注意,这些子文件夹中没有“
    cd
    ”,您可以执行以下操作:

    git -C /full/path/of/subrepo remote -v
    
  • 将该路径声明为子模块

    git submodule add -- /remote/url/of/subrepo relative/path/of/subrepo
    
OP提到了“。使用-C语法,将给出:

for d in `find .vim/bundle/ -maxdepth 1 -mindepth 1 -type d`
do
    export url=$(git -C $d config --get remote.origin.url)
    git submodule add $url $d
done

没有更多的pushd/popd。

thx关于您的答案,请查看我的编辑-现在必须赶时间,稍后再查看-regards@Aurigae是的,那是一样的idea@Aurigae我已经用-C syntax.kk重写了它,所以我们可以结束这个问题,我想,tyvm-纯粹是侥幸我遇到了链接脚本。我建议让QA保持开放状态,因为谷歌首先看不到答案,这里的关键字应该可以。thx关于你的答案,请查看我的编辑-现在必须赶紧,稍后再查看-regards@Aurigae是的,那是一样的idea@Aurigae我已经用-C syntax.kk重写了它,所以我们可以结束这个问题,我想,tyvm-我很幸运地看到了链接脚本。我建议让QA保持开放状态,因为谷歌首先看不到答案,这里的关键词就可以了。