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

Re: git commit error on initial (the very first) commit

From
Junio C Hamano <junkio@cox.net>
Date
Jan 29, 2006, 21:05 UTC
Message-ID
<7v8xsyiw2v.fsf@assigned-by-dhcp.cox.net>
In-Reply-To
<200601292026.54893.arvidjaar@mail.ru>
Andrey Borzenkov <arvidjaar@mail.ru> writes:
Show 11 quoted lines
> May be I do something wrong? What is correct procedure to initially import 
> tree? git 1.1.4
>
> {pts/0}% git init-db
> defaulting to local storage area
> {pts/0}% git add .
> {pts/0}% git commit -m 'initial import'
> usage: git-diff-index [-m] [--cached] [<common diff options>] <tree-ish> 
> [<path>...]
> common diff options:
> ... etc
I suspect you have $(template_dir)/hooks/pre-commit enabled.

-- >8 -- [PATCH] pre-commit sample hook: do not barf on the initial import

The example hook barfs on the initial import. Ideally it should produce a diff from an empty tree, but for now let's stop at squelching the bogus error message. Often an initial import involves tons of badly formatted files from foreign SCM, so not complaining about them like this patch does might actually be a better idea than enforcing the "Perfect Patch" format on them.

Signed-off-by: Junio C Hamano <junkio@cox.net>
---
diff --git a/templates/hooks--pre-commit b/templates/hooks--pre-commit
index 4bb6803..6b3a21b 100644
--- a/templates/hooks--pre-commit
+++ b/templates/hooks--pre-commit
@@ -10,8 +10,16 @@
 # This is slightly modified from Andrew Morton's Perfect Patch.
 # Lines you introduce should not have trailing whitespace.
 # Also check for an indentation that has SP before a TAB.
+
+if git-rev-parse --verify HEAD 2>/dev/null
+then
+	git-diff-index -p -M --cached HEAD
+else
+	# NEEDSWORK: we should produce a diff with an empty tree here
+	# if we want to do the same verification for the initial import.
+	:
+fi |		
 perl -e '
-    my $fh;
     my $found_bad = 0;
     my $filename;
     my $reported_filename = "";
@@ -31,8 +39,7 @@ perl -e '
 	print STDERR "* $why (line $lineno)\n";
 	print STDERR "$filename:$lineno:$line\n";
     }
-    open $fh, "-|", qw(git-diff-index -p -M --cached HEAD);
-    while (<$fh>) {
+    while (<>) {
 	if (m|^diff --git a/(.*) b/\1$|) {
 	    $filename = $1;
 	    next;
Previous: J. Bruce Fields
Message 5 of 5 in “git commit error on initial (the very first) commit”
  1. Andrey BorzenkovJan 29, 2006
  2. J. Bruce FieldsJan 29, 2006
  3. Junio C HamanoJan 29, 2006
  4. J. Bruce FieldsJan 29, 2006
  5. Junio C HamanoJan 29, 2006

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.