From: David D. Kilzer Date: Wed, 21 Nov 2007 19:57:19 +0000 (-0800) Subject: git-svn: info --url [path] X-Git-Tag: v1.5.4-rc0~165^2~1 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=8b014d7157d29ce76b0f631e19c6e2ce9aeb2366;p=git.git git-svn: info --url [path] 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 Acked-by: Eric Wong --- diff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt index c3fc878d5..918a9928b 100644 --- a/Documentation/git-svn.txt +++ b/Documentation/git-svn.txt @@ -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. -- diff --git a/git-svn.perl b/git-svn.perl index fd1036104..7d86870ee 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -65,7 +65,7 @@ my ($_stdin, $_help, $_edit, $_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, @@ -181,7 +181,7 @@ my %cmd = ( 'info' => [ \&cmd_info, "Show info about the latest SVN revision on the current branch", - { } ], + { 'url' => \$_url, } ], ); my $cmd; @@ -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"; diff --git a/t/t9119-git-svn-info.sh b/t/t9119-git-svn-info.sh index fbde8c81b..439bd93c8 100644 --- a/t/t9119-git-svn-info.sh +++ b/t/t9119-git-svn-info.sh @@ -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 && @@ -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 && @@ -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 && @@ -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 && @@ -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 && @@ -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 @@ -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 && @@ -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 && @@ -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 && @@ -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. @@ -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 && @@ -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 && @@ -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 && @@ -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