blog for the day
This commit is contained in:
parent
6acc4fa83f
commit
ef34aa2be1
1 changed files with 52 additions and 0 deletions
52
doc/design/assistant/blog/day_126__mr_watson_come_here.mdwn
Normal file
52
doc/design/assistant/blog/day_126__mr_watson_come_here.mdwn
Normal 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.
|
Loading…
Add table
Reference in a new issue