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

[PATCH] cvsexportcommit: fix for commits that do not have parents

From
Brad King <brad.king@kitware.com>
Date
Oct 31, 2007, 20:55 UTC
Message-ID
<4728EBB1.8050404@kitware.com>

Previously commits without parents would fail to export with a message indicating that the commits had more than one parent. Instead we should use the --root option for git-diff-tree in place of a parent.

Signed-off-by: Brad King <brad.king@kitware.com>
---
This is a corrected version of the patch I previously posted which had a typo.
 git-cvsexportcommit.perl |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/git-cvsexportcommit.perl b/git-cvsexportcommit.perl
index f284c88..26844af 100755
--- a/git-cvsexportcommit.perl
+++ b/git-cvsexportcommit.perl
@@ -82,6 +82,7 @@ foreach my $line (@commit) {
     }
 }

+my $noparent = "0000000000000000000000000000000000000000";
 if ($parent) {
     my $found;
     # double check that it's a valid parent
@@ -95,8 +96,10 @@ if ($parent) {
 } else { # we don't have a parent from the cmdline...
     if (@parents == 1) { # it's safe to get it from the commit
 	$parent = $parents[0];
-    } else { # or perhaps not!
-	die "This commit has more than one parent -- please name the parent you want to use explicitly";
+    } elsif (@parents == 0) { # there is no parent
+        $parent = $noparent;
+    } else { # cannot choose automatically from multiple parents
+        die "This commit has more than one parent -- please name the parent you want to use explicitly";
     }
 }

@@ -116,7 +119,11 @@ if ($opt_a) {
 }
 close MSG;

-`git-diff-tree --binary -p $parent $commit >.cvsexportcommit.diff`;# || die "Cannot diff";
+if ($parent eq $noparent) {
+    `git-diff-tree --binary -p --root $commit >.cvsexportcommit.diff`;# || die "Cannot diff";
+} else {
+    `git-diff-tree --binary -p $parent $commit >.cvsexportcommit.diff`;# || die "Cannot diff";
+}

 ## apply non-binary changes
-- 
1.5.3.2
Message 1 of 1 in “cvsexportcommit: fix for commits that do not have parents”
  1. cvsexportcommit: fix for commits that do not have parentsBrad King, Oct 31, 2007

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.