#!/usr/bin/perl # Parses list of remotes in doc/git.mdwn, configures git to use them # all, and fetches updates from them. my $error=0; open (IN, "doc/git.mdwn") || die "doc/git.mdwn: $!"; while () { if (/^\*\s+\[?\[?(\w+)(?:\|\w+)?\]?\]?\s+`([^>]+)`/) { # note that the remote name has to be a simple word (\w) # for security/sanity reasons my $remote=$1; my $url=$2; # check configured url to deal with it changing my $info=`git remote show -n $remote`; my ($oldurl)=$info=~/URL: (.*)/m; my $r; if ($oldurl ne $url) { system("git remote rm $remote 2>/dev/null"); $r = system("git", "remote", "add", "-f", $remote, $url) } else { $r = system("git", "fetch", "--no-tag", $remote); } if ($r != 0) { print "$remote failed\n"; } $error |= $r; } } close IN; exit $error;