From: J. Bakshi Date: Mon, 25 Jun 2012 07:48:49 GMT Subject: Re: pre-receive hook ; how to detect file and append code ? Message-ID: <20120625131849.1b1425b6@shiva.selfip.org> In-Reply-To: <7v395nql6m.fsf@alter.siamese.dyndns.org> On Fri, 22 Jun 2012 11:02:41 -0700 Junio C Hamano wrote: > "J. Bakshi" writes: > > > How can I detect a specific file during push, if it is modified or not ? > > And how can I then append a block of code into that file; if modified > > during push ? I think pre-receive hook is the best for this operation. > > The purpose of the "pre-receive" hook is to either approve or reject > a proposed change made by the push. When it runs, the repository > already has received all the objects necessary to inspect the > proposed change locally (from the receiving repository's point of > view). > > A proposed change comes in the form of that > says "The pusher saw at when he started this push, > and it wants to update the ref to ". So any of the following > standard techniques (note: not exhaustive) to inspect the changes > between and can be used: > > # are log messages sane? > git log .. > > # are the changes sane? > git diff .. > > # does it leave forbidden paths intact > git diff --name-only .. > > If your script likes the proposed change, exit with 0. If it does > not, exit with non-zero. > > That is all it can do. It is not supposed to change to some > other value, and there is no interface to do so. > > If you want to rewrite the history pushed into the repository after > a push is accepted, you would want to run it from post-receive or > something. All the usual warning about rewriting published history > will apply if you do so, however. After all, the history is already > published immediately before post-recieve (or post-update) runs. Thanks a lot for the clarifications....