On Sat, Jun 26, 2010 at 7:24 PM, Mahesh Vaidya <forvaidya@xxxxxxxxx> wrote: > 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. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html