RE: "git commit" fails due to spurious file in index

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Yes, you're correct, it was a bug in my pre-commit hook. Thanks!

For posterity, the issue is that I had the following line:

    git diff -z --cached --name-only | egrep -z '\.(pl|pm|t)$' | \
            while read -d'' -r f; do ...

In Bash, when `read` is passed the `-d` option with a zero-length
string argument, read will split on null characters (`'\0'`). However,
I did not put a space between the `-d` option and the argument, so
it took the `-` in the next argument `-r` as the delimiter. My commit
includes Perl files with `-` characters in the name, which I had not
previously committed to this repo, which is why I only ran into the
problem now. I fixed it by changing the read command to
`read -r -d '' f`, which now has the crucial space between -d and
its argument, making the zero-length string a separate argument.

Robert Irelan | Server Systems | Epic | (608) 271-9000


-----Original Message-----
From: Thomas Rast [mailto:trast@xxxxxxxxxxxxxxx] 
Sent: Monday, March 04, 2013 2:59 PM
To: Robert Irelan
Cc: git@xxxxxxxxxxxxxxx
Subject: Re: "git commit" fails due to spurious file in index

Robert Irelan <rirelan@xxxxxxxx> writes:

> Now, when I run 'git add admin_script/setup' to add the new directory 
> to the repo and then try to commit, I receive the following message:
>
>     $ git commit
>     mv: cannot stat `admin_scripts/setup/2012/setup': No such file or 
> directory
>
> The error message is correct in that `admin_scripts/setup/2012/setup` 
> does not exist, either as a file or as a directory. However, I'm not 
> attempting to add this path at all. Using grep, I've confirmed that 
> the only place this path appears in any of my files is in `.git/index`.

To me that sounds like the message comes from a commit hook.  Can you check if you have anything in .git/hooks/, especially pre-commit?

There really isn't any other good reason why 'git commit' would call 'mv' (plain mv, not git!).

--
Thomas Rast
trast@{inf,student}.ethz.ch
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]