From: Chris Patti Date: Thu, 02 Sep 2010 14:34:18 GMT Subject: Re: Odd results writing a Git pre-receive hook to syntax check PHP files. Message-ID: In-Reply-To: <7vk4n68hpk.fsf@alter.siamese.dyndns.org> On Tue, Aug 31, 2010 at 7:50 PM, Junio C Hamano wrote: > Chris Patti writes: > >> 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? > I tested with subdirectories, and subdirs with subdirs, and no failures, worked perfectly. So, not sure what feels wrong to you, but for now, it works :) I will seek to better understand the internals I'm mucking with here so I can figure out why you see the current implementation as being suspect. -Chris -- Christopher Patti - Geek At Large | GTalk: cpatti@gmail.com | AIM: chrisfeohpatti | P: (260) 54PATTI "Technology challenges art, art inspires technology." - John Lasseter, Pixar