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

Re: [BUG?] git-cvsimport: path to cvspsfile

From
Jeff King <peff@peff.net>
Date
Sep 23, 2009, 19:14 UTC
Message-ID
<20090923191428.GA30104@coredump.intra.peff.net>
In-Reply-To
<20090923182756.GA12430@onyx.camk.edu.pl>
On Wed, Sep 23, 2009 at 08:27:56PM +0200, Kacper Kornet wrote:
Show 6 quoted lines
> When I use:
> 
> git cvs-import -C <dir> -P <cvspsfile>
> 
> it looks for <cvpsfile> relative to <dir>, not the working directory.
> Is it a bug or a feature?

Bug. The script does a chdir() and then looks at the cvspsfile later. I think "-A" would have the same problem. Here is a totally untested patch to address the issue. Johannes, will this is_absolute_path actually work on Windows? I think The Right Way would be to use File::Spec::file_name_is_absolute, but I haven't checked whether that is part of core perl and if so, which version it appeared in.

diff --git a/git-cvsimport.perl b/git-cvsimport.perl
index 1ad20ac..08a30ec 100755
--- a/git-cvsimport.perl
+++ b/git-cvsimport.perl
@@ -579,10 +579,26 @@ sub get_headref ($) {
 	return $r;
 }
 
+sub is_absolute_path {
+	local $_ = shift;
+	return m{^/};
+}
+
+my $user_filename_prepend = '';
+sub munge_user_filename {
+	my $name = shift;
+	return is_absolute_path($name) ?
+		$name :
+		$user_filename_prepend . $name;
+}
+
 -d $git_tree
 	or mkdir($git_tree,0777)
 	or die "Could not create $git_tree: $!";
-chdir($git_tree);
+if ($git_tree ne '.') {
+	$user_filename_prepend = getwd() . '/';
+	chdir($git_tree);
+}
 
 my $last_branch = "";
 my $orig_branch = "";
@@ -644,7 +660,7 @@ unless (-d $git_dir) {
 -f "$git_dir/cvs-authors" and
   read_author_info("$git_dir/cvs-authors");
 if ($opt_A) {
-	read_author_info($opt_A);
+	read_author_info(munge_user_filename($opt_A));
 	write_author_info("$git_dir/cvs-authors");
 }
 
@@ -679,7 +695,7 @@ unless ($opt_P) {
 	$? == 0 or die "git-cvsimport: fatal: cvsps reported error\n";
 	close $cvspsfh;
 } else {
-	$cvspsfile = $opt_P;
+	$cvspsfile = munge_user_filename($opt_P);
 }
 
 open(CVS, "<$cvspsfile") or die $!;
Previous: Kacper KornetNext: Johannes Sixt
Message 2 of 4 in “[BUG?] git-cvsimport: path to cvspsfile”
  1. Kacper KornetSep 23, 2009
  2. Jeff KingSep 23, 2009
  3. Johannes SixtSep 24, 2009
  4. Jeff KingSep 24, 2009

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.