threads / discuss / 3176

git commit error on initial (the very first) commit

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

## tl;dr

5 messages between Jan 29, 2006 and Jan 29, 2006.

replies: 4people: 3as markdown or json

Andrey Borzenkov· Jan 29, 2006, 17:26 UTC · lore
-----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· Jan 29, 2006, 18:16 UTC · re: Andrey Borzenkov · lore

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

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

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· Jan 29, 2006, 21:08 UTC · re: J. Bruce Fields · lore

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

"J. Bruce Fields" <bfields@fieldses.org> writes:
Show 10 quoted lines
> 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· Jan 29, 2006, 21:51 UTC · re: Junio C Hamano · lore

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

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.
Junio C Hamano· Jan 29, 2006, 21:05 UTC · re: Andrey Borzenkov · lore

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

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;

← back to recent threads