]>
git.madduck.net Git - code/myrepos.git/blobdiff - webcheckout
madduck's git repository
Every one of the projects in this repository is available at the canonical
URL git://git.madduck.net/madduck/pub/<projectpath> — see
each project's metadata for the exact URL.
All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@ git. madduck. net .
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
SSH access, as well as push access can be individually
arranged .
If you use my repositories frequently, consider adding the following
snippet to ~/.gitconfig and using the third clone URL listed for each
project:
[url "git://git.madduck.net/madduck/"]
insteadOf = madduck:
sub better {
my ($a, $b)=@_;
sub better {
my ($a, $b)=@_;
foreach my $r (@anon_urls) {
if ($a->{href} =~ /$r/) {
foreach my $r (@anon_urls) {
if ($a->{href} =~ /$r/) {
}
elsif ($b->{href} =~ /$r/) {
}
elsif ($b->{href} =~ /$r/) {
- return $firstanon != $a;
+ # Whichever is authed is better.
+ return 1 if ! @anon || ! grep { $_ eq $a } @anon;
+ return 0 if ! grep { $_ eq $b } @anon;
+ # Neither is authed, so the better anon method wins.
+ return $anon[0] == $a;
- return $firstanon == $a;
+ # Better anon method wins.
+ return @anon && $anon[0] == $a;
sub dedup {
my %seenhref;
my %bytitle;
sub dedup {
my %seenhref;
my %bytitle;
foreach my $repo (@_) {
if (exists $repo->{title} &&
foreach my $repo (@_) {
if (exists $repo->{title} &&
- length $repo->{title} &&
- exists $bytitle{$repo->{title}}) {
- my $other=$bytitle{$repo->{title}};
- next unless better($repo, $other);
- delete $bytitle{$other->{title}}
+ length $repo->{title}) {
+ if (exists $bytitle{$repo->{title}}) {
+ my $other=$bytitle{$repo->{title}};
+ next unless better($repo, $other);
+ delete $bytitle{$other->{title}}
+ }
+
+ if (! $seenhref{$repo->{href}}++) {
+ $bytitle{$repo->{title}}=$repo;
+ }
-
- if (! $seenhref{$repo->{href}}++) {
- $bytitle{$repo->{title}}=$repo;
+ else {
+ push @others, $repo;
- return values %bytitle;
+ return values %bytitle, @others ;
my @ret;
my $parser=HTML::Parser->new(api_version => 3);
my @ret;
my $parser=HTML::Parser->new(api_version => 3);
+ my $abody=undef;
+ my $aref=undef;
$parser->handler(start => sub {
my $tagname=shift;
my $attr=shift;
$parser->handler(start => sub {
my $tagname=shift;
my $attr=shift;
- return if lc $tagname ne 'link';
return if ! exists $attr->{rel} || lc $attr->{rel} ne 'vcs';
return if ! exists $attr->{href} || ! length $attr->{href};
return if ! exists $attr->{type} || ! length $attr->{type};
return if ! exists $attr->{rel} || lc $attr->{rel} ne 'vcs';
return if ! exists $attr->{href} || ! length $attr->{href};
return if ! exists $attr->{type} || ! length $attr->{type};
+
+ # need to collect the body of the <a> tag if there is no title
+ if ($tagname eq "a" && ! exists $attr->{title}) {
+ $abody="";
+ $aref=$attr;
+ }
+
push @ret, $attr;
}, "tagname, attr");
push @ret, $attr;
}, "tagname, attr");
+ $parser->handler(text => sub {
+ if (defined $aref) {
+ $abody.=join(" ", @_);
+ }
+ }, "text");
+ $parser->handler(end => sub {
+ my $tagname=shift;
+ if ($tagname eq "a" && defined $aref) {
+ $aref->{title}=$abody;
+ $aref=undef;
+ $abody=undef;
+ }
+ }, "tagname");
+ $parser->report_tags(qw{link a});
$parser->parse($page);
$parser->eof;
$parser->parse($page);
$parser->eof;
die "no repositories found on $url\n";
}
die "no repositories found on $url\n";
}
+#use Data::Dumper;
+#print Dumper(\@repos);
+#exit;
+
if (defined $destdir && @repos > 1) {
# create subdirs of $destdir for the multiple repos
if (defined $destdir && @repos > 1) {
# create subdirs of $destdir for the multiple repos
- mkdir($destdir);
- chdir($destdir) || die "failed to chdir to $destdir: $!";
+ if (! $noact) {
+ mkdir($destdir);
+ chdir($destdir) || die "failed to chdir to $destdir: $!";
+ }
-
-#use Data::Dumper;
-#print Dumper(\@repos);