Re: Verbose commit message diff not showing changes from pre-commit hook

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

 



Junio C Hamano <gitster@xxxxxxxxx> writes:

> Maxime Louet <maxime@xxxxxxxxx> writes:
>
>> Is this expected behaviour? I find it somehow confusing that the diff
>> in the commit message isn't the actual commit diff.
>
> Since the designed purpose of pre-commit hook is to examine the
> contents to be committed and reject the attempt to commit if there
> is something wrong found, and Git does not expect it to munge the
> contents to be committed, if the hook does so, you would get an
> undefined behaviour.  So anything is totally expected at that point.

Sorry, I have to take this back.

Even before ec84bd00 (git-commit: Refactor creation of log message.,
2008-02-05), the code anticipated that pre-commit may touch the index
and tried to cope with it.

However, ec84bd00 moved the place where we re-read the on-disk index
in the sequence, and updated a message that used to read:

-	/*
-	 * Re-read the index as pre-commit hook could have updated it,
-	 * and write it out as a tree.
-	 */

to:

+	/*
+	 * Re-read the index as pre-commit hook could have updated it,
+	 * and write it out as a tree.  We must do this before we invoke
+	 * the editor and after we invoke run_status above.
+	 */

Unfortunately there is no mention of the reason why we "must" here.
I think the "run_status above" is what prepared the patch in the log
message template, so it is quite likely that we deliberately did so
to exclude whatever munging pre-commit does to the index from
appearing in the patch in the verbose mode.  If I have to guess, I
think the reason is because pre-commit automation is expected to be
some sort of mechanical change and not part of the actual work that
the end-user produced, it would become easier to perform the "final
review" of "what have I done so far---does everything make sense?"
if such "extra" changes are excluded.

So, in short, it is not "undefined", but rather it seems to be a
designed behaviour that we are seeing.

Thanks.



[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]

  Powered by Linux