threads / discuss / 24209

How does receive-pack and pre-receive hook works ?

Subject: How does receive-pack and pre-receive hook works ?

## tl;dr

2 messages between Jun 27, 2010 and Jun 27, 2010.

replies: 1people: 2as markdown or json

Mahesh Vaidya· Jun 27, 2010, 02:24 UTC · lore
How does receive-pack and pre-receive hook works ?

I have added following in pre-recieve hook; all works fine. git rev-list --pretty d6d147f432869037a7ac8bdca3a2d5bc0cdc1e9f ^a3fe19833480023b72350d6e56e939cbd0ba2c8b

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.

Thx/ Mahesh.
Shawn Pearce· Jun 27, 2010, 07:00 UTC · re: Mahesh Vaidya · lore

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.

← back to recent threads