Skip to content

Commit

Permalink
git-svn: allow `info' command to work offline
Browse files Browse the repository at this point in the history
Cache the repository root whenever we connect to the repository.
This will allow us to notice URL changes if the user changes the
URL in .git/config, too.

If the repository is no longer accessible, or if `git svn info'
is the first and only command run; then '(offline)' will be
displayed for "Repository Root:" in the output.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
  • Loading branch information
Eric Wong committed Nov 22, 2007
1 parent 8b014d7 commit a5460eb
Showing 1 changed file with 23 additions and 3 deletions.
26 changes: 23 additions & 3 deletions git-svn.perl
Original file line number Diff line number Diff line change
Expand Up @@ -782,9 +782,14 @@ sub cmd_info {
$result .= "Name: " . basename($path) . "\n" if $file_type ne "dir";
$result .= "URL: " . $full_url . "\n";

my $repos_root = $gs->ra->{repos_root};
Git::SVN::remove_username($repos_root);
$result .= "Repository Root: $repos_root\n";
eval {
my $repos_root = $gs->repos_root;
Git::SVN::remove_username($repos_root);
$result .= "Repository Root: $repos_root\n";
};
if ($@) {
$result .= "Repository Root: (offline)\n";
}
$result .= "Repository UUID: $uuid\n" unless $diff_status eq "A";
$result .= "Revision: " . ($diff_status eq "A" ? 0 : $rev) . "\n";

Expand Down Expand Up @@ -1773,9 +1778,24 @@ sub ra_uuid {
$self->{ra_uuid};
}

sub _set_repos_root {
my ($self, $repos_root) = @_;
my $k = "svn-remote.$self->{repo_id}.reposRoot";
$repos_root ||= $self->ra->{repos_root};
tmp_config($k, $repos_root);
$repos_root;
}

sub repos_root {
my ($self) = @_;
my $k = "svn-remote.$self->{repo_id}.reposRoot";
eval { tmp_config('--get', $k) } || $self->_set_repos_root;
}

sub ra {
my ($self) = shift;
my $ra = Git::SVN::Ra->new($self->{url});
$self->_set_repos_root($ra->{repos_root});
if ($self->use_svm_props && !$self->{svm}) {
if ($self->no_metadata) {
die "Can't have both 'noMetadata' and ",
Expand Down

0 comments on commit a5460eb

Please sign in to comment.