Re: How does receive-pack and pre-receive hook works ?
On Sat, Jun 26, 2010 at 7:24 PM, Mahesh Vaidya <forvaidya@gmail.com> wrote:
Show 6 quoted lines
> How does receive-pack and pre-receive hook works ?
>
> I Would like know where does Git saves whatever I am pushing before
> exit 0 of this hook; Specifically how does it understand about
> 'd6d147f432869037a7ac8bdca3a2d5bc0cdc1e9f' which is not part of
> destination depot / repo.
The objects that were sent are actually added to the destination repository, by creating one or more loose objects in the objects/ directory, or a single new pack file in the objects/pack/ directory if more than 100 objects were sent. These objects are in the repository, but they aren't actually reachable from any ref, so they are subject to garbage collection during a future `git gc`. Once the objects are safely stored, the hooks are invoked... which means the hooks can access the objects, as they are already part of the repository.
If pre-receive or update exits with a non-zero status, the objects stay around, but the references aren't updated. By not updating the references, the objects aren't reachable, and the objects will be automatically removed during a future `git gc`.
--
Shawn.