Fossil Forum
Post: libfossil can now do a network clone of the fossil repo!
Congratulations to Stephan Beal, whose years of work on libfossil have resulted in a very complete, independent implementation of Fossil. By reading Stephan's extensive comments in the code I was able to tidy up a couple of bugs and voila, as of today the f-clone command works:
fsl_msg INFO: Sync URL: https://fossil-scm.org/home
fsl_msg CONNECT: starting trip #1
fsl_msg INFO: Remote fossil version is 22900 20260701 163431
fsl_msg INFO: Got new project code: CE59BB9F186226D80E49D1FA2DB29F935CCA0333
fsl_msg CONNECT: starting trip #2
fsl_msg CONNECT: starting trip #3
fsl_msg CONNECT: starting trip #4
fsl_msg CONNECT: starting trip #5
fsl_msg CONNECT: starting trip #6
fsl_msg CONNECT: starting trip #7
fsl_msg CONNECT: starting trip #8
fsl_msg CONNECT: starting trip #9
fsl_msg CONNECT: starting trip #10
fsl_msg CONNECT: starting trip #11
fsl_msg CONNECT: starting trip #12
fsl_msg CONNECT: starting trip #13
Rebuild complete in 67542 steps.
fsl_xfer metrics:
Cards read: 67,574
cfile 67,451
clone_seqno 13
igot 84
pragma 13
push 13
Cards written: 27
clone 13
pragma 27
pull 12
Bytes written: 2,242
Bytes read uncompressed: 47,402,691
Largest card payload: 2,459,404
fsl_xfer timers (ms):
Purpose Wall CPU User System
fsl_sc::submit() 37717.092 480.579 250.103 230.476
fsl_sc::read() 250.270 229.215 207.206 22.009
processing 4588.857 4549.279 4118.018 431.261
--------------------------------------------------------------------------------
= 42556.219 5259.073 4575.327 683.746
libfossil is about correctness, massively so. That is why Stephan has discovered oddities and corner cases over the years about Fossil cards, the delta process etc, and why he has authored a lot of the documentation about Fossil internals. It is libfossil that inspired the current experiments creating IETF RFCs for Fossil, and as of today this extends to the network protocol too.
--
Dan Shearer
[email protected] / https://shearer.org/
I was able to tidy up a couple of bugs and voila, as of today the f-clone command works:
i cannot overstate what a milestone that is for the project. Sync has been the "last major missing piece" for more than a decade. To be clear for those reading along, sync isn't 100% working, but Dan getting clone to work solves the issues which have been roadblocks for sync since about a year. We've still some work to do on the sync support, but the path forward is clear and, fingers crossed, free of further major whack-a-moles in the post-sync processing of blobs.
My many thanks to Dan for his whacking of the offending moles!
He also, in his spare time, added a proper HTTP(S) transport binding via libssl, whereas the prototype code was shelling out to curl for that.