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

[PATCH] git-cvsimport-script: use private index.

From
SVSven Verdoolaege <skimo@kotnet.org>
Date
Jul 4, 2005, 12:13 UTC
Message-ID
<20050704121344.GJ18608MdfPADPa@garage.linux.student.kuleuven.ac.be>
In-Reply-To
<20050703103517.GJ5992MdfPADPa@garage.linux.student.kuleuven.ac.be>
git-cvsimport-script: use private index.

--- commit 79ee456cf222982f7ee3f003440c57b5f7cffa8b tree c27c7f8bafa48d81a4d9f7562b851681984a9c7e parent 2eb6d82eaa869a1faf4ba3326fd628f76f9f93a8 author Sven Verdoolaege <skimo@kotnet.org> Mon, 04 Jul 2005 13:36:59 +0200 committer Sven Verdoolaege <skimo@kotnet.org> Mon, 04 Jul 2005 13:36:59 +0200

 git-cvsimport-script |   43 +++++++++++++++++++++++--------------------
 1 files changed, 23 insertions(+), 20 deletions(-)
diff --git a/git-cvsimport-script b/git-cvsimport-script
--- a/git-cvsimport-script
+++ b/git-cvsimport-script
@@ -16,6 +16,8 @@
 use strict;
 use warnings;
 use Getopt::Std;
+use File::Spec;
+use File::Temp qw(tempfile);
 use File::Path qw(mkpath);
 use File::Basename qw(basename dirname);
 use Time::Local;
@@ -377,6 +379,12 @@ my %branch_date;
 my $git_dir = $ENV{"GIT_DIR"} || ".git";
 $git_dir = getwd()."/".$git_dir unless $git_dir =~ m#^/#;
 $ENV{"GIT_DIR"} = $git_dir;
+my $orig_git_index;
+$orig_git_index = $ENV{GIT_INDEX_FILE} if exists $ENV{GIT_INDEX_FILE};
+my ($git_ih, $git_index) = tempfile('gitXXXXXX', SUFFIX => '.idx',
+				    DIR => File::Spec->tmpdir());
+close ($git_ih);
+$ENV{GIT_INDEX_FILE} = $git_index;
 unless(-d $git_dir) {
 	system("git-init-db");
 	die "Cannot init the GIT db at $git_tree: $?\n" if $?;
@@ -398,6 +406,9 @@ unless(-d $git_dir) {
 	}
 	$orig_branch = $last_branch;
 
+	# populate index
+	system('git-read-tree', $last_branch);
+
 	# Get the last import timestamps
 	opendir(D,"$git_dir/refs/heads");
 	while(defined(my $head = readdir(D))) {
@@ -643,11 +654,6 @@ while(<CVS>) {
 			system("git-read-tree","-m","$last_branch","$branch");
 			die "read-tree failed: $?\n" if $?;
 		}
-		if($branch ne $last_branch) {
-			unlink("$git_dir/HEAD");
-			symlink("refs/heads/$branch","$git_dir/HEAD");
-			$last_branch = $branch;
-		}
 		$state = 9;
 	} elsif($state == 8) {
 		$logmsg .= "$_\n";
@@ -686,26 +692,23 @@ while(<CVS>) {
 }
 &$commit() if $branch and $state != 11;
 
+unlink($git_index);
+
 # Now switch back to the branch we were in before all of this happened
 if($orig_branch) {
-	print "DONE; switching back to $orig_branch\n" if $opt_v;
+	print "DONE\n" if $opt_v;
 } else {
 	$orig_branch = "master";
 	print "DONE; creating $orig_branch branch\n" if $opt_v;
 	system("cp","$git_dir/refs/heads/$opt_o","$git_dir/refs/heads/master")
 		unless -f "$git_dir/refs/heads/master";
+	unlink("$git_dir/HEAD");
+	symlink("refs/heads/$orig_branch","$git_dir/HEAD");
+	if (defined $orig_git_index) {
+	    $ENV{GIT_INDEX_FILE} = $orig_git_index;
+	} else {
+	    delete $ENV{GIT_INDEX_FILE};
+	}
+	system('git checkout');
+	die "checkout failed: $?\n" if $?;
 }
-
-if ($orig_branch) {
-	system("git-read-tree",$last_branch);
-	die "read-tree failed: $?\n" if $?;
-} else {
-	system('git-read-tree', $orig_branch);
-	die "read-tree failed: $?\n" if $?;
-	system('git-checkout-cache', '-a');
-	die "checkout-cache failed: $?\n" if $?;
-}
-
-unlink("$git_dir/HEAD");
-symlink("refs/heads/$orig_branch","$git_dir/HEAD");
-
Previous: Sven VerdoolaegeNext: Sven Verdoolaege
Message 34 of 49 in “cvsimport: rewritten in Perl”
  1. cvsimport: rewritten in PerlMatthias Urlichs, Jun 28, 2005
  2. Nicolas PitreJun 29, 2005
  3. Matthias UrlichsJun 29, 2005
  4. Matthias UrlichsJun 30, 2005
  5. Nicolas PitreJun 30, 2005
  6. cvsimport-in-Perl: Limit the number of arguments to git-update-cacheMatthias Urlichs, Jun 30, 2005
  7. Nicolas PitreJun 30, 2005
  8. Nicolas PitreJun 30, 2005
  9. Matthias UrlichsJun 30, 2005
  10. cvsimport: perform string comparison on "HEAD"Sven Verdoolaege, Jun 30, 2005
  11. Matthias UrlichsJun 30, 2005
  12. cvsimport: Limit the log string to 32kMatthias Urlichs, Jun 30, 2005
  13. Sven VerdoolaegeJun 30, 2005
  14. Matthias UrlichsJun 30, 2005
  15. Sven VerdoolaegeJun 30, 2005
  16. Matthias UrlichsJun 30, 2005
  17. Sven VerdoolaegeJun 30, 2005
  18. Matthias UrlichsJun 30, 2005
  19. Nicolas PitreJun 30, 2005
  20. Matthias UrlichsJul 1, 2005
  21. Sven VerdoolaegeJul 3, 2005
  22. Make specification of CVS module to convert optional.Sven Verdoolaege, Jul 3, 2005
  23. git-cvsimport-script: clean up documentationSven Verdoolaege, Jul 3, 2005
  24. git-cvsimport-script: Honour CVS_SERVER.Sven Verdoolaege, Jul 3, 2005
  25. git-cvsimport-script: Support :ext: access method.Sven Verdoolaege, Jul 3, 2005
  26. Sven VerdoolaegeJul 3, 2005
  27. Matthias UrlichsJul 3, 2005
  28. Wolfgang DenkJul 5, 2005
  29. Linus TorvaldsJul 6, 2005
  30. Sven VerdoolaegeJul 6, 2005
  31. Matthias UrlichsJul 6, 2005
  32. Wolfgang DenkJul 6, 2005
  33. git-cvsimport-script: leave working directory alone.Sven Verdoolaege, Jul 4, 2005
  34. git-cvsimport-script: use private index.Sven Verdoolaege, Jul 4, 2005
  35. git-cvsimport-script: fix branch switchingSven Verdoolaege, Jul 4, 2005
  36. git-cvsimport-script: update cvsps cache instead of rebuilding itSven Verdoolaege, Jul 4, 2005
  37. Sven VerdoolaegeJun 30, 2005
  38. Matthias UrlichsJun 30, 2005
  39. Sven VerdoolaegeJul 1, 2005
  40. Matthias UrlichsJul 1, 2005
  41. Sven VerdoolaegeJul 4, 2005
  42. Matthias UrlichsJul 4, 2005
  43. Sven VerdoolaegeJul 4, 2005
  44. Matthias UrlichsJul 4, 2005
  45. Sven VerdoolaegeJul 4, 2005
  46. Sven VerdoolaegeJul 3, 2005
  47. Matthias UrlichsJul 4, 2005
  48. Sven VerdoolaegeJul 4, 2005
  49. Stephen C. TweedieJun 30, 2005

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.