aboutsummaryrefslogtreecommitdiff
path: root/git-remote.perl
diff options
context:
space:
mode:
authorShawn O. Pearce <spearce@spearce.org>2007-02-02 00:05:55 -0500
committerJunio C Hamano <junkio@cox.net>2007-02-01 22:03:42 -0800
commit7a8c9ec1a95a368c5f32d430058d67109feccfee (patch)
treeec2b93fc26297b12030d0f76b5f7357dd94f9af6 /git-remote.perl
parent22600a2515cc92f66fd76f2aae05637697c713b9 (diff)
downloadgit-7a8c9ec1a95a368c5f32d430058d67109feccfee.tar.gz
git-7a8c9ec1a95a368c5f32d430058d67109feccfee.tar.xz
Pull out remote listing functions in git-remote.
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>
Diffstat (limited to 'git-remote.perl')
-rwxr-xr-xgit-remote.perl43
1 files changed, 23 insertions, 20 deletions
diff --git a/git-remote.perl b/git-remote.perl
index c813fe145..969d33bc5 100755
--- a/git-remote.perl
+++ b/git-remote.perl
@@ -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) {
@@ -156,25 +156,14 @@ 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 (/(\+)?([^:]+):(.*)/);
@@ -182,7 +171,11 @@ sub show_mapping {
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";
@@ -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";
}
}