git-svn: allow `info' command to work offline
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>
This commit is contained in:
parent
8b014d7157
commit
a5460eb7bb
26
git-svn.perl
26
git-svn.perl
@ -782,9 +782,14 @@ sub cmd_info {
|
|||||||
$result .= "Name: " . basename($path) . "\n" if $file_type ne "dir";
|
$result .= "Name: " . basename($path) . "\n" if $file_type ne "dir";
|
||||||
$result .= "URL: " . $full_url . "\n";
|
$result .= "URL: " . $full_url . "\n";
|
||||||
|
|
||||||
my $repos_root = $gs->ra->{repos_root};
|
eval {
|
||||||
Git::SVN::remove_username($repos_root);
|
my $repos_root = $gs->repos_root;
|
||||||
$result .= "Repository Root: $repos_root\n";
|
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 .= "Repository UUID: $uuid\n" unless $diff_status eq "A";
|
||||||
$result .= "Revision: " . ($diff_status eq "A" ? 0 : $rev) . "\n";
|
$result .= "Revision: " . ($diff_status eq "A" ? 0 : $rev) . "\n";
|
||||||
|
|
||||||
@ -1773,9 +1778,24 @@ sub ra_uuid {
|
|||||||
$self->{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 {
|
sub ra {
|
||||||
my ($self) = shift;
|
my ($self) = shift;
|
||||||
my $ra = Git::SVN::Ra->new($self->{url});
|
my $ra = Git::SVN::Ra->new($self->{url});
|
||||||
|
$self->_set_repos_root($ra->{repos_root});
|
||||||
if ($self->use_svm_props && !$self->{svm}) {
|
if ($self->use_svm_props && !$self->{svm}) {
|
||||||
if ($self->no_metadata) {
|
if ($self->no_metadata) {
|
||||||
die "Can't have both 'noMetadata' and ",
|
die "Can't have both 'noMetadata' and ",
|
||||||
|
Loading…
Reference in New Issue
Block a user