Re: Odd results writing a Git pre-receive hook to syntax check PHP files.
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Aug 31, 2010, 23:50 UTC
- Message-ID
- <7vk4n68hpk.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <AANLkTimiSBjifxtDoFXAEAEpYM8bJ18SwJ5Fj8zqh_G6@mail.gmail.com>
Chris Patti <cpatti@gmail.com> writes:
Show 9 quoted lines
> function parseCommit($old_sha1,$new_sha1) {
> # if this is the first commit on a new branch, $old_sha1 will
> be a bunch of zeroes, and so
> # git diff --raw will fail, since there's no old ref to
> compare against. So, we parse the
> # results of git diff-tree -root=$new_sha1 instead to get the
> blob and filename we'll need.
> if (detectNewBranch($old_sha1,$new_sha1)) {
> $diffcmd="git diff-tree --root $new_sha1";This somehow feels wrong. If the tree of the new commit is flat without subdirectory, the above would do, but don't you need "diff-tree -r" here?
> $regex="/\:\w+ \w+ \w+ (\w+) \w (.+)/";
> }
> else {
> $diffcmd="git diff --raw $old_sha1 $new_sha1";And you are better off using "diff-tree -r" here instead of "diff --raw" here as well, to keep the input to your parser for both cases uniform. The parser would be easier that way, no?
> $regex="/\:\d+ \d+ \w+... (\w+)... \w\t(.+)/"; > }