git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 5/6] git svn info: make info relative to the current directory

From
Thomas Rast <trast@student.ethz.ch>
Date
Aug 26, 2008, 19:32 UTC
Message-ID
<1219779157-31602-6-git-send-email-trast@student.ethz.ch>
In-Reply-To
<1219779157-31602-5-git-send-email-trast@student.ethz.ch>

Previously 'git svn info <path>' would always treat the <path> as relative to the working directory root, with a default of ".". This does not match the behaviour of 'svn info'. Prepend $(git rev-parse --show-prefix) to the path used inside cmd_info to make it relative to the current working directory.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
---

I realise that this might break things for people who rely on the current behaviour, but looking at the tests, the goal is to imitate 'svn info' as closely as possible. This also matches my use case of 'svn info || git svn info', which is why I stumbled over the problem in the first place.

 git-svn.perl            |    5 +++--
 t/t9119-git-svn-info.sh |   14 +++++++++++++-
 2 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/git-svn.perl b/git-svn.perl
index 7a1d26d..46bc0b0 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -805,6 +805,7 @@ sub cmd_commit_diff {
 
 sub cmd_info {
 	my $path = canonicalize_path(defined($_[0]) ? $_[0] : ".");
+	my $fullpath = canonicalize_path($cmd_dir_prefix . $path);
 	if (exists $_[1]) {
 		die "Too many arguments specified\n";
 	}
@@ -825,7 +826,7 @@ sub cmd_info {
 	# canonicalize_path() will return "" to make libsvn 1.5.x happy,
 	$path = "." if $path eq "";
 
-	my $full_url = $url . ($path eq "." ? "" : "/$path");
+	my $full_url = $url . ($fullpath eq "" ? "" : "/$fullpath");
 
 	if ($_url) {
 		print $full_url, "\n";
@@ -861,7 +862,7 @@ sub cmd_info {
 	}
 
 	my ($lc_author, $lc_rev, $lc_date_utc);
-	my @args = Git::SVN::Log::git_svn_log_cmd($rev, $rev, "--", $path);
+	my @args = Git::SVN::Log::git_svn_log_cmd($rev, $rev, "--", $fullpath);
 	my $log = command_output_pipe(@args);
 	my $esc_color = qr/(?:\033\[(?:(?:\d+;)*\d*)?m)*/;
 	while (<$log>) {
diff --git a/t/t9119-git-svn-info.sh b/t/t9119-git-svn-info.sh
index 821507d..8709bcc 100755
--- a/t/t9119-git-svn-info.sh
+++ b/t/t9119-git-svn-info.sh
@@ -45,12 +45,18 @@ test_expect_success 'setup repository and import' '
 		ln -s directory symlink-directory &&
 		svn import -m "initial" . "$svnrepo" &&
 	cd .. &&
+	svn co "$svnrepo" svnwc &&
+	cd svnwc &&
+		echo foo > foo &&
+		svn add foo &&
+		svn commit -m "change outside directory" &&
+		svn update &&
+	cd .. &&
 	mkdir gitwc &&
 	cd gitwc &&
 		git-svn init "$svnrepo" &&
 		git-svn fetch &&
 	cd .. &&
-	svn co "$svnrepo" svnwc &&
 	ptouch gitwc/file svnwc/file &&
 	ptouch gitwc/directory svnwc/directory &&
 	ptouch gitwc/symlink-file svnwc/symlink-file &&
@@ -93,6 +99,12 @@ test_expect_success 'info directory' "
 	test_cmp expected.info-directory actual.info-directory
 	"
 
+test_expect_success 'info inside directory' "
+	(cd svnwc/directory; svn info) > expected.info-inside-directory &&
+	(cd gitwc/directory; git-svn info) > actual.info-inside-directory &&
+	test_cmp expected.info-inside-directory actual.info-inside-directory
+	"
+
 test_expect_success 'info --url directory' '
 	test "$(cd gitwc; git-svn info --url directory)" = "$svnrepo/directory"
 	'
-- 
1.6.0.1.96.g9307e.dirty
Previous: Thomas RastNext: Thomas Rast
Message 6 of 17 in “'git svn info' fixes”
  1. 0/6 'git svn info' fixesThomas Rast, Aug 26, 2008
  2. 1/6 git svn info: tests: let 'init' test run with SVN 1.5Thomas Rast, Aug 26, 2008
  3. 2/6 git svn info: tests: do not use set -eThomas Rast, Aug 26, 2008
  4. 3/6 git svn info: tests: use test_cmp instead of git-diffThomas Rast, Aug 26, 2008
  5. 4/6 git svn info: tests: fix ptouch argument order in setupThomas Rast, Aug 26, 2008
  6. 5/6 git svn info: make info relative to the current directoryThomas Rast, Aug 26, 2008
  7. 6/6 git svn info: always quote URLs in 'info' outputThomas Rast, Aug 26, 2008
  8. Eric WongAug 27, 2008
  9. Eric WongAug 27, 2008
  10. Thomas RastAug 28, 2008
  11. Eric WongAug 29, 2008
  12. 0/2 *** SUBJECT HERE ***Thomas Rast, Aug 29, 2008
  13. 1/2 git-svn: match SVN 1.5 behaviour of info' on unknown itemThomas Rast, Aug 29, 2008
  14. 2/2 git-svn: fix 'info' tests for unknown itemsThomas Rast, Aug 29, 2008
  15. Eric WongAug 30, 2008
  16. Thomas RastSep 1, 2008
  17. Eric WongSep 1, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.