optimize diffcore-delta by sorting hash entries.
[gitweb.git] / git-remote.perl
index 52013fe76dba73e19244fadf63f91677ce8e6a40..8e2dc4de733efe1803d42f5ba4f35ca1be683ad0 100755 (executable)
@@ -218,7 +218,7 @@ sub prune_remote {
        my ($name, $ls_remote) = @_;
        if (!exists $remote->{$name}) {
                print STDERR "No such remote $name\n";
-               return;
+               return 1;
        }
        my $info = $remote->{$name};
        update_ls_remote($ls_remote, $info);
@@ -229,13 +229,14 @@ sub prune_remote {
                my @v = $git->command(qw(rev-parse --verify), "$prefix/$to_prune");
                $git->command(qw(update-ref -d), "$prefix/$to_prune", $v[0]);
        }
+       return 0;
 }
 
 sub show_remote {
        my ($name, $ls_remote) = @_;
        if (!exists $remote->{$name}) {
                print STDERR "No such remote $name\n";
-               return;
+               return 1;
        }
        my $info = $remote->{$name};
        update_ls_remote($ls_remote, $info);
@@ -258,12 +259,14 @@ sub show_remote {
        if ($info->{'PUSH'}) {
                my @pushed = map {
                        s|^refs/heads/||;
+                       s|^\+refs/heads/|+|;
                        s|:refs/heads/|:|;
                        $_;
                } @{$info->{'PUSH'}};
                print "  Local branch(es) pushed with 'git push'\n";
                print "    @pushed\n";
        }
+       return 0;
 }
 
 sub add_remote {
@@ -297,9 +300,9 @@ sub update_remote {
        } elsif ($name eq 'default') {
                undef @remotes;
                for (sort keys %$remote) {
-                       my $do_fetch = $git->config_boolean("remote." . $_ .
+                       my $do_fetch = $git->config_bool("remote." . $_ .
                                                    ".skipDefaultUpdate");
-                       if (!defined($do_fetch) || $do_fetch ne "true") {
+                       unless ($do_fetch) {
                                push @remotes, $_;
                        }
                }
@@ -318,9 +321,21 @@ sub add_usage {
        exit(1);
 }
 
+local $VERBOSE = 0;
+@ARGV = grep {
+       if ($_ eq '-v' or $_ eq '--verbose') {
+               $VERBOSE=1;
+               0
+       } else {
+               1
+       }
+} @ARGV;
+
 if (!@ARGV) {
        for (sort keys %$remote) {
-               print "$_\n";
+               print "$_";
+               print "\t$remote->{$_}->{URL}" if $VERBOSE;
+               print "\n";
        }
 }
 elsif ($ARGV[0] eq 'show') {
@@ -338,9 +353,11 @@ sub add_usage {
                print STDERR "Usage: git remote show <remote>\n";
                exit(1);
        }
+       my $status = 0;
        for (; $i < @ARGV; $i++) {
-               show_remote($ARGV[$i], $ls_remote);
+               $status |= show_remote($ARGV[$i], $ls_remote);
        }
+       exit($status);
 }
 elsif ($ARGV[0] eq 'update') {
        if (@ARGV <= 1) {
@@ -366,9 +383,11 @@ sub add_usage {
                print STDERR "Usage: git remote prune <remote>\n";
                exit(1);
        }
+       my $status = 0;
        for (; $i < @ARGV; $i++) {
-               prune_remote($ARGV[$i], $ls_remote);
+               $status |= prune_remote($ARGV[$i], $ls_remote);
        }
+        exit($status);
 }
 elsif ($ARGV[0] eq 'add') {
        my %opts = ();