check wiki existency
authorKen-ichi Mito <mitty@mitty.jp>
Wed, 21 Aug 2013 02:36:58 +0000 (11:36 +0900)
committerKen-ichi Mito <mitty@mitty.jp>
Wed, 21 Aug 2013 02:36:58 +0000 (11:36 +0900)
 * some repositories have no wiki even if '"has_wiki": true'

Dev/github/GitHubBackup.pm

index c202d1a..35a1836 100644 (file)
@@ -200,12 +200,12 @@ sub sync {
     
     if (-d "$dir") {
         local $CWD = $dir;
-        print "fetch ", $dir, "\n";
+        print "fetch $dir\n";
         Git::Repository->run(fetch => '--all');
         return $self;
     }
     
-    print "clone ", $dir, "\n";
+    print "clone $dir\n";
     mkpath $dir;
     Git::Repository->run(clone => '--mirror' => $url => $dir);
     
@@ -251,7 +251,7 @@ sub set_forks {
     }
     
     foreach my $fork (@fetch) {
-        print "fetch ", $fork, "\n";
+        print "fetch $fork\n";
         Git::Repository->run(fetch => $fork);
     }
     
@@ -264,6 +264,15 @@ sub clone_wiki {
     my $dir = $self->directory . '.wiki.git';
     my $url = 'https://github.com/' . $self->full_name . '.wiki.git';
     
+    my $ua = LWP::UserAgent->new(max_redirect => 0);
+    my $res = $ua->head(
+        'https://github.com/' . $self->full_name . '/wiki'
+    );
+    if ($res->code != 200) {
+        print "$dir does not exist\n";
+        return $self;
+    }
+    
     $self->sync($url => $dir);
     
     return $self;