서브 모듈 내부의 Git 서브 모듈 (중첩 서브 모듈)
자식 서브 모듈이 다른 여러 자식 서브 모듈로 만들어지고 슈퍼 자식 저장소가 각 서브 모듈의 내용을 가져올 수 있습니까?
나는 여러 서브 모듈을 보유하고있는 git repo를 만드는 명백하고 순진한 접근 방식을 사용 하여이 작업을 시도했습니다.
그런 다음이 자식 저장소를 다른 자식 저장소에 하위 모듈로 추가하십시오.
그 다음으로 슈퍼 자식의 repo의 루트 디렉토리에서 끌어 시도 git submodule init
하고 git submodule update
. 그러나 이것은 하위 서브 모듈을 가져 오지 못합니다.
회고 에서 언급했듯이 git repo에 --recursive를 추가하십시오.
git submodule update --init --recursive
작동해야합니다.
로 스리는 Git1.6.5 +에서, 아래 댓글 git clone --recursive
에 기술 된 공식 대안은 지금 :
- "
git clone --submodule
" - " git repo에 소급 추가
--recursive
"
(alias $ git config --global alias.cloner = 'clone --recursive'
정상git clone
명령의 그림자를 피하는 )
inamiy 정확하게 지적git submodule update --init --recursive
에 소개 명령, b13fd5c 커밋을 하여 다시 git1.6.5에, 요한 Herland ( jherland
) .
서브 모듈에서 하나의 서브 모듈 만 체크 아웃
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
'Programing' 카테고리의 다른 글
Windows의 Google 코드에서 프로젝트를 다운로드 / 체크 아웃하는 방법은 무엇입니까? (0) | 2020.07.06 |
---|---|
특정 상황에서 필수 유효성 검사 속성 비활성화 (0) | 2020.07.06 |
테이블에서 데이터 행을 삭제 한 후 MySQL InnoDB가 디스크 공간을 공개하지 않음 (0) | 2020.07.05 |
루비 온 레일즈. (0) | 2020.07.05 |
void * 란 무엇이며 어떻게 사용합니까? (0) | 2020.07.05 |