2012-05-19 17 views
10

Me gustaría saber cómo funciona git-receive-pack, porque literalmente no tengo idea de qué pasa con él. ¿Alguien puede arrojar algo de luz sobre este misterio?¿Cómo funciona git-receive-pack?

+2

¿Has leído [9.6 Git Internals - Transfer Protocols] (http://git-scm.com/book/ch9-6.html)? Lo pregunto porque la respuesta adecuada dependería de tu comprensión de ese capítulo. – Johnsyweb

+0

No, no lo he hecho, lo siento, ni siquiera me di cuenta de que estaba allí hasta después de la respuesta. –

Respuesta

9

According to the man page:

http://schacon.github.com/git/git-receive-pack.html 

Este comando no suele ser invocado directamente por el usuario final. La interfaz de usuario para el protocolo está en el lado del paquete de envío de git, y el par de programa está destinado a ser utilizado para enviar actualizaciones al depósito remoto. Para operaciones de extracción, vea git-fetch-pack (1).

El comando permite la creación y el reenvío rápido de sha1 refs (heads/tags) en el extremo remoto (estrictamente hablando, es el extremo local git-receive-pack que se ejecuta, pero para el usuario que está sentado en el final del paquete de envío, está actualizando el control remoto. ¿Confundido?)

Incluso la persona que escribe la página del manual piensa que es confusa, ¡así que no se culpe si no la entiende!

Básicamente, esto es parte del código que recibe confirmaciones en el servidor remoto que fueron empacadas y enviadas por send-pack en su máquina local cuando hace un git push.

No es importante comprender los detalles que lo respaldan, como dicen los documentos, no es un comando que en realidad se deba escribir.

Si está realmente muy interesado en cómo funciona internamente, un par de buenos lugares para empezar podría ser:

The Wikipedia Page on Git (Software), The Git Website itself, o The free book, Pro Git

O, siempre se puede ir look the 'c' code up for that command en el código fuente aquí en github.

http://git-scm.com/

+1

"Básicamente, esto es parte del código que empaqueta los cambios y compromisos del código en su máquina y los envía a donde quiera que esté presionando el código cuando hace un git push". Esto es incorrecto. 'receive-pack' es lo que recibe_ esos paquetes. 'send-pack' es lo que los empaqueta :) – bdonlan

+0

¡Ah, gracias! Eso es realmente lo que estaba pensando, pero escribí mal las cosas ... He tratado de corregir eso en la respuesta. –

+1

Gracias, hombre, el libro tenía lo que estaba buscando. (El desbordamiento de la pila parece tener algunos problemas en el cromo, así que tardé un poco en responder y tal). –