File: gitremotes

package info (click to toggle)
ikiwiki 3.20120629.2
  • links: PTS
  • area: main
  • in suites: wheezy
  • size: 15,972 kB
  • sloc: perl: 25,749; python: 400; sh: 179; makefile: 92
file content (26 lines) | stat: -rwxr-xr-x 803 bytes parent folder | download | duplicates (11)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/usr/bin/perl
# Parses list of remotes in doc/git.mdwn, configures git to use them
# all. After running this, use "git remote update --prune" to pull
# updates from all remotes.

open (IN, "doc/git.mdwn") || die "doc/git.mdwn: $!";
while (<IN>) {
	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;
		if ($oldurl ne $url) {
			system("git remote rm $remote 2>/dev/null");
			system("git", "remote", "add", $remote, $url);
			system("git", "config", "remote.$remote.tagopt",
				"--no-tags");
			system("git", "fetch", $remote);
		}
	}
}
close IN;