blog for the day

This commit is contained in:
Joey Hess 2012-11-09 18:23:00 -04:00
parent 6acc4fa83f
commit ef34aa2be1

View file

@ -0,0 +1,52 @@
I'm stunned and stoked to have gotten git push over XMPP working today.
And am nearly out of steam, it was a wild ride..
To xmpp::joey@kitenet.net
* [new branch] master -> refs/xmpp/newmaster
The surprising part is how close my initial implementation came to just
working on the first try. It had around 3 bugs, which took hours of staring
at debugging output to find:
1. The git push action was run in the same thread as the XMPP
client, which prevented the client from continuing to run and relaying
messages.
2. The git-receive-pack side waited on the wrong thread, so didn't
notice when the program was done.
3. I accidentially used the wrong attribute name when sending a ReceivePackDone
message.
But all in all, it just worked.
Here's a sample of the actual data sent when one file is added to the
repository (also includes the corresponding update to the git-annex branch):
MDA4NjhhMmNmOGZjMWE3MTlkOGVjOWVmOWZiMGZiNjVlODc2NjQ1NDAyMTAgODIwNTZjMDM4
ZjU2YzE1ODdjYzllOWRhNzQzMzU0YjE4NzNjZWJlOSByZWZzL3htcHAvbmV3bWFzdGVyACBy
ZXBvcnQtc3RhdHVzIHNpZGUtYmFuZC02NGswMDAw
UEFDSwAAAAIAAAADnAx4nJXLTQ4CIQxA4T2n4AKaAqVAYoxL4y2gU+Jo5iczdeHtnSu4eMm3
ebqJ2NwgSCLmNkTBlKFCYwwhoHOtQ+scqZCwWesms9pcPffc2dXkypCFi/TSG/RGUXIiwojg
HZj60eey2cciX3uXfbeX18Hbe1SZRc9HV+tC9FgyJW9PgACGl2kaVeXfz/wArHQ81qMGeJwz
NDIAAoVUI4ZZB9RW1E8NtXp5t77/fn3hw41cl2MNIbIZqTk5+Qwerw+aJX2INjsffYndtdCz
5mZWLDdUQV5qeVpmDtCQnx/3/6s40+Q4P/7O+Y4ShS+1Ad83AwC6CirftAt4nK3MsRGDMAwF
0IkcSVgSdpkidzRUmcDWBy4pSAEFl+mzRN4A77a9Tmr7vlz06e8lzoPmmb5Mz+k+mD/SkTkl
eFHPq9eqQ+nSzFsWaDFnFmCMCEOvHgLrCrQxS7AWdvUVhv9uPwHxMbfumlvWdco1RLL4wSQF
g0uFFOKu3Q==
Git said this push took 385 bytes; after base64 encoding to transport it over
XMPP as shown above, it needs 701 bytes, and the XMPP envelope and encryption
adds more overhead (although the XMPP connection may also be compressed?)
Not the most efficient git transport, but still a practical one!
----
Big thanks by the way to meep, who posted a comment reminding me about
`git-remote-helpers`. This was the right thing to use for XMPP over git,
it lets the git remote be configured with `url = xmpp::user@host`.
----
Next, I need to get the assistant to use this for syncing. Currently, it only
pushes a test branch.