Programing

서브 모듈 내부의 Git 서브 모듈 (중첩 서브 모듈)

crosscheck 2020. 7. 6. 07:52
반응형

서브 모듈 내부의 Git 서브 모듈 (중첩 서브 모듈)


자식 서브 모듈이 다른 여러 자식 서브 모듈로 만들어지고 슈퍼 자식 저장소가 각 서브 모듈의 내용을 가져올 수 있습니까?

나는 여러 서브 모듈을 보유하고있는 git repo를 만드는 명백하고 순진한 접근 방식을 사용 하여이 작업을 시도했습니다.

그런 다음이 자식 저장소를 다른 자식 저장소에 하위 모듈로 추가하십시오.

그 다음으로 슈퍼 자식의 repo의 루트 디렉토리에서 끌어 시도 git submodule init하고 git submodule update. 그러나 이것은 하위 서브 모듈을 가져 오지 못합니다.


회고 에서 언급했듯이 git repo에 --recursive를 추가하십시오.

git submodule update --init --recursive

작동해야합니다.


스리는 Git1.6.5 +에서, 아래 댓글 git clone --recursive에 기술 된 공식 대안은 지금 :

inamiy 정확하게 지적git submodule update --init --recursive 에 소개 명령, b13fd5c 커밋을 하여 다시 git1.6.5에, 요한 Herland ( jherland) .

그리고 IceFire주석에 다음을 추가합니다 .

서브 모듈에서 하나의 서브 모듈 만 체크 아웃
git submodule update --init <submoduleName>하려면 가고자합니다.


(이전의 원래 답변)

매뉴얼 페이지 에 따르면

 git submodule update --recursive

중첩 된 하위 모듈을 업데이트해야합니다. 그러나 초기 부분은 재귀 적이 지 않을 수 있습니다.

Git 버전에 따라이 기사 에서 재귀적인 초기화 및 업데이트를 허용하는 재귀 적으로 업데이트하는 Git 서브 모듈 기사를 통해보다 "스크립팅"방식으로 넘어갈 수 있습니다.

#!/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);
}

참고 URL : https://stackoverflow.com/questions/1535524/git-submodule-inside-of-a-submodule-nested-submodules

반응형