# git commit error on initial (the very first) commit

5 messages from 2006-01-29 to 2006-01-29. Participants: Andrey Borzenkov, J. Bruce Fields, Junio C Hamano.
Thread: https://gitlist.dev/t/3176

## Andrey Borzenkov, 2006-01-29 17:26

Subject: git commit error on initial (the very first) commit
Message-ID: <200601292026.54893.arvidjaar@mail.ru>
URL: https://gitlist.dev/e/200601292026.54893.arvidjaar%40mail.ru

```
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

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

Committing initial tree 4c9bc57b6911db86c7ab482cca33948a9ba20ef0

- -andrey
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)

iD8DBQFD3PreR6LMutpd94wRAiP1AJwI93tNjyQ3PYjuwh/EP/GQJHhjKQCeNsuq
6oWKT+2XHaU3Qe50hkmkQ+g=
=493D
-----END PGP SIGNATURE-----

```

## J. Bruce Fields, 2006-01-29 18:16

Subject: Re: git commit error on initial (the very first) commit
Message-ID: <20060129181625.GA5540@fieldses.org>
URL: https://gitlist.dev/e/20060129181625.GA5540%40fieldses.org
In-Reply-To: <200601292026.54893.arvidjaar@mail.ru>

```
On Sun, Jan 29, 2006 at 08:26:54PM +0300, Andrey Borzenkov wrote:
> 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'

It needs to know which paths to update.  Probably you want to include
all the files you added with the "git add", and you can do that just
with -a:

	git commit -a -m "initial import"

should do the job.  The default commit command for me is usually just
git commit -a.

--b.

```

## Junio C Hamano, 2006-01-29 21:05

Subject: Re: git commit error on initial (the very first) commit
Message-ID: <7v8xsyiw2v.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7v8xsyiw2v.fsf%40assigned-by-dhcp.cox.net
In-Reply-To: <200601292026.54893.arvidjaar@mail.ru>

```
Andrey Borzenkov <arvidjaar@mail.ru> writes:

> 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;

```

## Junio C Hamano, 2006-01-29 21:08

Subject: Re: git commit error on initial (the very first) commit
Message-ID: <7v1wyqivx1.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7v1wyqivx1.fsf%40assigned-by-dhcp.cox.net
In-Reply-To: <20060129181625.GA5540@fieldses.org>

```
"J. Bruce Fields" <bfields@fieldses.org> writes:

> On Sun, Jan 29, 2006 at 08:26:54PM +0300, Andrey Borzenkov wrote:
>> 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'
>
> It needs to know which paths to update.

While I agree with you that individual developers should always
say "commit -a" after testing their changes, I do not think that
has much to do with Andrey's problem.

In a freshly created repository, "git add ." would register
everything to the index file, and a "git commit" with or without
"-a" that immediately follows "git add ." would commit what is
in the index.  Use of "-a" would not make a difference here.

```

## J. Bruce Fields, 2006-01-29 21:51

Subject: Re: git commit error on initial (the very first) commit
Message-ID: <20060129215157.GB12394@fieldses.org>
URL: https://gitlist.dev/e/20060129215157.GB12394%40fieldses.org
In-Reply-To: <7v1wyqivx1.fsf@assigned-by-dhcp.cox.net>

```
On Sun, Jan 29, 2006 at 01:08:58PM -0800, Junio C Hamano wrote:
> In a freshly created repository, "git add ." would register
> everything to the index file, and a "git commit" with or without
> "-a" that immediately follows "git add ." would commit what is
> in the index.  Use of "-a" would not make a difference here.

Aie, you're right of course, thanks.--b.

```
