in lib/ES/BaseRepo.pm [93:131]
sub _try_to_fetch {
#===================================
my $self = shift;
my $git_dir = $self->git_dir;
return unless -e $git_dir;
my $alternates_file = $git_dir->file('objects', 'info', 'alternates');
if ( -e $alternates_file ) {
my $alternates = $alternates_file->slurp( iomode => '<:encoding(UTF-8)' );
chomp( $alternates );
unless ( -e $alternates ) {
printf(" - %20s: Missing reference. Deleting\n", $self->name);
$git_dir->rmtree;
return;
}
}
my $remote = eval { run qw(git remote -v) } || '';
$remote =~ /^origin\s+(\S+)/;
my $origin = $1;
unless ($origin) {
printf(" - %20s: Repo dir exists but is not a repo. Deleting\n", $self->name);
$git_dir->rmtree;
return;
}
my $name = $self->name;
my $url = $self->url;
if ( $origin ne $url ) {
printf(" - %20s: Upstream has changed from <%s> to <%s>. Deleting\n",
$self->name, $origin, $url);
$git_dir->rmtree;
return;
}
printf(" - %20s: Fetching\n", $self->name);
$self->fetch();
return 1;
}