子模块内部的Git子模块(嵌套子模块)?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (33)

一个git子模块是否可以由其他几个git子模块组成,而超级gitrepo可以获取每个子模块的内容?

我尝试使用明显/天真的方法来实现这一点,即创建一个包含多个子模块的gitrepo。

然后将此gitrepo添加到另一个gitrepo作为子模块。

然后尝试从超级gitrepo的根目录中提取git submodule init然后git submodule update。但这不能获取子模块。

提问于
用户回答回答于

git submodule update --init --recursive

应该管用。

用户回答回答于

可以回到一种更“脚本”的方法上,通过递归更新Git子模块它允许递归init和更新:

#!/usr/bin/perl

use strict;
use Cwd;

init_and_update();

exit;

sub init_and_update
{
    my $start_path = cwd();

    my %paths;
    my $updated;

    do
    {
        my $data = `find . -name '.gitmodules'`;
        chomp($data);

        $data =~ s/\/\.gitmodules//g;

        foreach my $path (split(/\n/, $data))
        {
            $paths{$path} = '' if($paths{$path} eq '');
        }

        $updated = 0;

        foreach my $path (sort keys %paths)
        {
            if($paths{$path} eq '')
            {
                chdir($path);
                `git submodule init 2>&1`;
                `git submodule update 2>&1`;
                chdir($start_path);

                if($ARGV[0] eq '--remove-gitmodules')
                {
                    unlink("$path/.gitmodules");
                }

                $paths{$path} = 1;

                $updated++;
            }
        }
    } while($updated);
}

扫码关注云+社区