Skip to content

Commit

Permalink
Pull out remote listing functions in git-remote.
Browse files Browse the repository at this point in the history
I want to reuse the stale branch detection to implement a new
'git remote prune' subcommand.  Easiest way to do that is to use
the same logic that 'git remote show' uses to determine the stale
tracking branches, then delete those.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
Shawn O. Pearce authored and Junio C Hamano committed Feb 2, 2007
1 parent 22600a2 commit 7a8c9ec
Showing 1 changed file with 23 additions and 20 deletions.
43 changes: 23 additions & 20 deletions git-remote.perl
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ sub update_ls_remote {
$info->{'LS_REMOTE'} = \@ref;
}

sub show_wildcard_mapping {
sub list_wildcard_mapping {
my ($forced, $ours, $ls) = @_;
my %refs;
for (@$ls) {
Expand All @@ -156,33 +156,26 @@ sub show_wildcard_mapping {
push @tracked, $_;
}
}
if (@new) {
print " New remote branches (next fetch will store in remotes/$ours)\n";
print " @new\n";
}
if (@stale) {
print " Stale tracking branches in remotes/$ours (you'd better remove them)\n";
print " @stale\n";
}
if (@tracked) {
print " Tracked remote branches\n";
print " @tracked\n";
}
return \@new, \@stale, \@tracked;
}

sub show_mapping {
sub list_mapping {
my ($name, $info) = @_;
my $fetch = $info->{'FETCH'};
my $ls = $info->{'LS_REMOTE'};
my (@stale, @tracked);
my (@new, @stale, @tracked);

for (@$fetch) {
next unless (/(\+)?([^:]+):(.*)/);
my ($forced, $theirs, $ours) = ($1, $2, $3);
if ($theirs eq 'refs/heads/*' &&
$ours =~ /^refs\/remotes\/(.*)\/\*$/) {
# wildcard mapping
show_wildcard_mapping($forced, $1, $ls);
my ($w_new, $w_stale, $w_tracked)
= list_wildcard_mapping($forced, $1, $ls);
push @new, @$w_new;
push @stale, @$w_stale;
push @tracked, @$w_tracked;
}
elsif ($theirs =~ /\*/ || $ours =~ /\*/) {
print STDERR "Warning: unrecognized mapping in remotes.$name.fetch: $_\n";
Expand All @@ -196,13 +189,23 @@ sub show_mapping {
}
}
}
if (@stale) {
return \@new, \@stale, \@tracked;
}

sub show_mapping {
my ($name, $info) = @_;
my ($new, $stale, $tracked) = list_mapping($name, $info);
if (@$new) {
print " New remote branches (next fetch will store in remotes/$name)\n";
print " @$new\n";
}
if (@$stale) {
print " Stale tracking branches in remotes/$name (you'd better remove them)\n";
print " @stale\n";
print " @$stale\n";
}
if (@tracked) {
if (@$tracked) {
print " Tracked remote branches\n";
print " @tracked\n";
print " @$tracked\n";
}
}

Expand Down

0 comments on commit 7a8c9ec

Please sign in to comment.