Jako Sridhar komentarze poniżej, z Git1.6.5 + git clone --recursive
jest teraz oficjalnym alternatywa, opisane w:
inamiy poprawnie points out Komenda git submodule update --init --recursive
, wprowadzona w commit b13fd5c, ponownie w git1.6.5, przez Johan Herland (jherland
).
IceFire I dodaje in the comments:
Jeśli chcesz kasy tylko jeden submodule o modułem, potem
git submodule update --init <submoduleName>
jest droga.
(starszy odpowiedź oryginalny)
Według manual page
git submodule update --recursive
powinien aktualizować żadnych zagnieżdżone submodules. Ale część init może nie być rekursywna.
W zależności od wersji Git, można spaść z powrotem do bardziej podejścia „skryptowy”, z tym artykułem Recursively Updating Git Submodules który pozwala na rekurencyjne init oraz aktualizacji:
#!/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);
}
To zadziałało dla mnie. Zauważ, że błędnie pomyślałem, że 'git submodule init; Aktualizacja modułu git --recursive' była równoznaczna z powyższym, ale tak nie jest. – jsdalton
+1 Podoba mi się to o wiele lepiej niż to, z czego korzystałem: git submodule foreach git submodule init ... następnie git submodule update --recursive –
Niestety to nie działało dla mnie. Brak erozji, brak wiadomości, nic. –