I\'m playing around with git\'s transfer protocols, and I was just wondering if there is some detailed specification for them before I attempt to read the source?
there is also a partially completed documentation hosted on Github Gist.
This metasploit module also poses as a malicious dumb git server, serving bad git trees. You can see how the git trees are constructed.
Update May 2018: Starting Q2 2018 and Git 2.18, you will have the Git transfer protocol v2: See "How does Git's transfer protocol work".
Original answer 2013:
First, check the git documentation in the git repo itself (with a good grep, available even on Windows):
git clone https://github.com/git/git
cd git/Documentation
grep -nRHI "receive-pack" *
That will give you pointers to:
Then you can complete that set of documentation with ones related to the backend commands:
One way at looking at the source is by looking at the recent evolutions around transfer and transport in the git repo:
git clone https://github.com/git/git
cd git
git log -Stransfer
Have a look at:
Another way is to have a look at other implementation of git:
C, with libgit2, and its src/transports sources.
... and so on