Re: how-to get commit content with pre-receive hook ?

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

 



On Thu, Apr 6, 2017 at 4:03 PM, Eric Belhomme <rico-ml@xxxxxxxxxxxx> wrote:
> Until now I ever had a quite "basic" Git usage, but now I'm working on a
> project based on Git hooks feature.. and I'm a very beginner with Git hooks
> !
>
> My need consist doing a syntax check on submitted files before a 'git push'.
> So the right hook is 'pre-receive' and I'm already able to identify the
> files I want to check using 'git show'.
>
> But I don't know how to get the *content* of the file being submitted to run
> my syntax check rules against it !
>
> I googled but most examples using pre-receive I found are doing sanity check
> on enveloppe but never on actual content of the file !
>
> Could someone here put me on the rails ?
>
> Regards,

As documented in githooks(5), the hook gets a list of these on stdin:

    <old-value> SP <new-value> SP <ref-name> LF

That means that you can use any git command to inspect that ref range, e.g.:

    git log -p <old>..<new>
    git diff <old>..<new>

Or (pseudocode):

    git show <commit>:<some path> for $(git rev-list <old>..<new>)

This is no different than how you'd inspect the content in your git
repo, e.g. to get the README.md content of the master branch of
git.git:

    $ git ls-tree master|grep README
    100644 blob f17af66a97c8097ab91f074478c4a5cb90425725    README.md
    $ git cat-file blob f17af66a97c8097ab91f074478c4a5cb90425725|wc
         61     397    3001



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