Skip to content

Commit

Permalink
git-svn: info --url [path]
Browse files Browse the repository at this point in the history
Return the svn URL for the given path, or return the svn
repository URL if no path is given.

Added 18 tests to t/t9119-git-svn-info.sh.

Signed-off-by: David D. Kilzer <ddkilzer@kilzer.net>
Acked-by: Eric Wong <normalperson@yhbt.net>
  • Loading branch information
David D. Kilzer authored and Eric Wong committed Nov 22, 2007
1 parent e6fefa9 commit 8b014d7
Show file tree
Hide file tree
Showing 3 changed files with 102 additions and 3 deletions.
3 changes: 2 additions & 1 deletion Documentation/git-svn.txt
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,8 @@ Any other arguments are passed directly to `git log'
'info'::
Shows information about a file or directory similar to what
`svn info' provides. Does not currently support a -r/--revision
argument.
argument. Use the --url option to output only the value of the
'URL:' field.

--

Expand Down
9 changes: 7 additions & 2 deletions git-svn.perl
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ BEGIN
$_template, $_shared,
$_version, $_fetch_all, $_no_rebase,
$_merge, $_strategy, $_dry_run, $_local,
$_prefix, $_no_checkout, $_verbose);
$_prefix, $_no_checkout, $_url, $_verbose);
$Git::SVN::_follow_parent = 1;
my %remote_opts = ( 'username=s' => \$Git::SVN::Prompt::_username,
'config-dir=s' => \$Git::SVN::Ra::config_dir,
Expand Down Expand Up @@ -181,7 +181,7 @@ BEGIN
'info' => [ \&cmd_info,
"Show info about the latest SVN revision
on the current branch",
{ } ],
{ 'url' => \$_url, } ],
);

my $cmd;
Expand Down Expand Up @@ -773,6 +773,11 @@ sub cmd_info {
}
my $full_url = $url . ($path eq "." ? "" : "/$path");

if ($_url) {
print $full_url, "\n";
return;
}

my $result = "Path: $path\n";
$result .= "Name: " . basename($path) . "\n" if $file_type ne "dir";
$result .= "URL: " . $full_url . "\n";
Expand Down
93 changes: 93 additions & 0 deletions t/t9119-git-svn-info.sh
Original file line number Diff line number Diff line change
Expand Up @@ -45,30 +45,51 @@ test_expect_success 'info' "
git-diff expected.info actual.info
"

test_expect_success 'info --url' '
test $(cd gitwc; git-svn info --url) = $svnrepo
'

test_expect_success 'info .' "
(cd svnwc; svn info .) > expected.info-dot &&
(cd gitwc; git-svn info .) > actual.info-dot &&
git-diff expected.info-dot actual.info-dot
"

test_expect_success 'info --url .' '
test $(cd gitwc; git-svn info --url .) = $svnrepo
'

test_expect_success 'info file' "
(cd svnwc; svn info file) > expected.info-file &&
(cd gitwc; git-svn info file) > actual.info-file &&
git-diff expected.info-file actual.info-file
"

test_expect_success 'info --url file' '
test $(cd gitwc; git-svn info --url file) = "$svnrepo/file"
'

test_expect_success 'info directory' "
(cd svnwc; svn info directory) > expected.info-directory &&
(cd gitwc; git-svn info directory) > actual.info-directory &&
git-diff expected.info-directory actual.info-directory
"

test_expect_success 'info --url directory' '
test $(cd gitwc; git-svn info --url directory) = "$svnrepo/directory"
'

test_expect_success 'info symlink-file' "
(cd svnwc; svn info symlink-file) > expected.info-symlink-file &&
(cd gitwc; git-svn info symlink-file) > actual.info-symlink-file &&
git-diff expected.info-symlink-file actual.info-symlink-file
"

test_expect_success 'info --url symlink-file' '
test $(cd gitwc; git-svn info --url symlink-file) \
= "$svnrepo/symlink-file"
'

test_expect_success 'info symlink-directory' "
(cd svnwc; svn info symlink-directory) \
> expected.info-symlink-directory &&
Expand All @@ -77,6 +98,11 @@ test_expect_success 'info symlink-directory' "
git-diff expected.info-symlink-directory actual.info-symlink-directory
"

test_expect_success 'info --url symlink-directory' '
test $(cd gitwc; git-svn info --url symlink-directory) \
= "$svnrepo/symlink-directory"
'

test_expect_success 'info added-file' "
echo two > gitwc/added-file &&
cd gitwc &&
Expand All @@ -92,6 +118,11 @@ test_expect_success 'info added-file' "
git-diff expected.info-added-file actual.info-added-file
"

test_expect_success 'info --url added-file' '
test $(cd gitwc; git-svn info --url added-file) \
= "$svnrepo/added-file"
'

test_expect_success 'info added-directory' "
mkdir gitwc/added-directory svnwc/added-directory &&
ptouch gitwc/added-directory svnwc/added-directory &&
Expand All @@ -109,6 +140,11 @@ test_expect_success 'info added-directory' "
git-diff expected.info-added-directory actual.info-added-directory
"

test_expect_success 'info --url added-directory' '
test $(cd gitwc; git-svn info --url added-directory) \
= "$svnrepo/added-directory"
'

test_expect_success 'info added-symlink-file' "
cd gitwc &&
ln -s added-file added-symlink-file &&
Expand All @@ -127,6 +163,11 @@ test_expect_success 'info added-symlink-file' "
actual.info-added-symlink-file
"

test_expect_success 'info --url added-symlink-file' '
test $(cd gitwc; git-svn info --url added-symlink-file) \
= "$svnrepo/added-symlink-file"
'

test_expect_success 'info added-symlink-directory' "
cd gitwc &&
ln -s added-directory added-symlink-directory &&
Expand All @@ -145,6 +186,11 @@ test_expect_success 'info added-symlink-directory' "
actual.info-added-symlink-directory
"

test_expect_success 'info --url added-symlink-directory' '
test $(cd gitwc; git-svn info --url added-symlink-directory) \
= "$svnrepo/added-symlink-directory"
'

# The next few tests replace the "Text Last Updated" value with a
# placeholder since git doesn't have a way to know the date that a
# now-deleted file was last checked out locally. Internally it
Expand All @@ -166,6 +212,11 @@ test_expect_success 'info deleted-file' "
git-diff expected.info-deleted-file actual.info-deleted-file
"

test_expect_success 'info --url file (deleted)' '
test $(cd gitwc; git-svn info --url file) \
= "$svnrepo/file"
'

test_expect_success 'info deleted-directory' "
cd gitwc &&
git rm -r -f directory > /dev/null &&
Expand All @@ -182,6 +233,11 @@ test_expect_success 'info deleted-directory' "
git-diff expected.info-deleted-directory actual.info-deleted-directory
"

test_expect_success 'info --url directory (deleted)' '
test $(cd gitwc; git-svn info --url directory) \
= "$svnrepo/directory"
'

test_expect_success 'info deleted-symlink-file' "
cd gitwc &&
git rm -f symlink-file > /dev/null &&
Expand All @@ -199,6 +255,11 @@ test_expect_success 'info deleted-symlink-file' "
actual.info-deleted-symlink-file
"

test_expect_success 'info --url symlink-file (deleted)' '
test $(cd gitwc; git-svn info --url symlink-file) \
= "$svnrepo/symlink-file"
'

test_expect_success 'info deleted-symlink-directory' "
cd gitwc &&
git rm -f symlink-directory > /dev/null &&
Expand All @@ -216,6 +277,11 @@ test_expect_success 'info deleted-symlink-directory' "
actual.info-deleted-symlink-directory
"

test_expect_success 'info --url symlink-directory (deleted)' '
test $(cd gitwc; git-svn info --url symlink-directory) \
= "$svnrepo/symlink-directory"
'

# NOTE: git does not have the concept of replaced objects,
# so we can't test for files in that state.

Expand All @@ -228,6 +294,12 @@ test_expect_success 'info unknown-file' "
git-diff expected.info-unknown-file actual.info-unknown-file
"

test_expect_success 'info --url unknown-file' '
test -z $(cd gitwc; git-svn info --url unknown-file \
2> ../actual.info--url-unknown-file) &&
git-diff expected.info-unknown-file actual.info--url-unknown-file
'

test_expect_success 'info unknown-directory' "
mkdir gitwc/unknown-directory svnwc/unknown-directory &&
ptouch gitwc/unknown-directory svnwc/unknown-directory &&
Expand All @@ -239,6 +311,13 @@ test_expect_success 'info unknown-directory' "
git-diff expected.info-unknown-directory actual.info-unknown-directory
"

test_expect_success 'info --url unknown-directory' '
test -z $(cd gitwc; git-svn info --url unknown-directory \
2> ../actual.info--url-unknown-directory) &&
git-diff expected.info-unknown-directory \
actual.info--url-unknown-directory
'

test_expect_success 'info unknown-symlink-file' "
cd gitwc &&
ln -s unknown-file unknown-symlink-file &&
Expand All @@ -255,6 +334,13 @@ test_expect_success 'info unknown-symlink-file' "
actual.info-unknown-symlink-file
"

test_expect_success 'info --url unknown-symlink-file' '
test -z $(cd gitwc; git-svn info --url unknown-symlink-file \
2> ../actual.info--url-unknown-symlink-file) &&
git-diff expected.info-unknown-symlink-file \
actual.info--url-unknown-symlink-file
'

test_expect_success 'info unknown-symlink-directory' "
cd gitwc &&
ln -s unknown-directory unknown-symlink-directory &&
Expand All @@ -272,4 +358,11 @@ test_expect_success 'info unknown-symlink-directory' "
actual.info-unknown-symlink-directory
"

test_expect_success 'info --url unknown-symlink-directory' '
test -z $(cd gitwc; git-svn info --url unknown-symlink-directory \
2> ../actual.info--url-unknown-symlink-directory) &&
git-diff expected.info-unknown-symlink-directory \
actual.info--url-unknown-symlink-directory
'

test_done

0 comments on commit 8b014d7

Please sign in to comment.