52 Commits

Author SHA1 Message Date
Kovid Goyal 0ffaaff8a7 Fix #8220 2025-01-16 13:21:31 +05:30
Kovid Goyal 405f5ce148 Use stdlib maps/slices 2024-06-24 07:54:13 +05:30
Kovid Goyal 1a32e62ebf More linter fixes 2023-09-18 21:07:39 +05:30
Kovid Goyal 49ea26968c Bump go version to 1.21
Allows us to use the much faster builtin min/max functions
for two variable min/max
2023-08-09 11:58:16 +05:30
Kovid Goyal 341d845b9a Port calls to slices.Sort functions since they now need a cmp() function rather than a less() function
Also rename os.SEEK_* to io.Seek* as the former has been deprecated
2023-08-04 22:50:13 +05:30
Kovid Goyal 4d686b2f47 Nicer string repr for operations 2023-07-30 19:49:46 +05:30
Kovid Goyal d0490672e1 Fix block range coalescing not working in algorithm.c 2023-07-30 19:49:46 +05:30
Kovid Goyal aff7f19580 DRYer 2023-07-30 19:49:46 +05:30
Kovid Goyal 6b5520f07a More work on porting the receive kitten 2023-07-30 19:49:45 +05:30
Kovid Goyal 063c39ea12 Wire up the rsync code in the send kitten 2023-07-30 19:49:43 +05:30
Kovid Goyal edc1669ced Ported tests all pass 2023-07-30 19:49:43 +05:30
Kovid Goyal b5498090df Finish the port of the rsync algorithm to C 2023-07-30 19:49:43 +05:30
Kovid Goyal c84874ca8d Add tests for the xxhash based hashers 2023-07-30 19:49:42 +05:30
Kovid Goyal fabb6bd8cc Start work on porting Go rsync implementation to C 2023-07-30 19:49:42 +05:30
Kovid Goyal 85df15bfc3 Add a test that the last op is hash 2023-07-30 19:49:42 +05:30
Kovid Goyal f64c4f34ac Also use io.Writer for signature iterator 2023-07-30 19:49:42 +05:30
Kovid Goyal 4b5216adcf Change delta creation API to use io.Writer
Simplifies logic and avoids an extra copy if the writer doesnt need to
make its own copy
2023-07-30 19:49:41 +05:30
Kovid Goyal 94b5bedfa5 Add overall file checksum verification to the rsync protocol 2023-07-30 19:49:41 +05:30
Kovid Goyal e125f803b3 Work on adding overall checksum support 2023-07-30 19:49:41 +05:30
Kovid Goyal 039e17840a Allow users to customize buffer growth strategy 2023-07-30 19:49:41 +05:30
Kovid Goyal c2ad662bed Use the append paradigm for the delta iterator as well 2023-07-30 19:49:41 +05:30
Kovid Goyal 579ab8551e Add some API docs 2023-07-30 19:49:41 +05:30
Kovid Goyal 77d5fe1be5 Change signature generation API to allow caller to provide storage and control iteration 2023-07-30 19:49:41 +05:30
Kovid Goyal bbb6a4ae35 Micro-optimization: store strong hash as a uint64 instead of a byte slice 2023-07-30 19:49:41 +05:30
Kovid Goyal 55f9359e1b Make the rsync struct private 2023-07-30 19:49:41 +05:30
Kovid Goyal 6c10528cbd Make the hasher var private in the rsync API 2023-07-30 19:49:41 +05:30
Kovid Goyal ca835cd80d ... 2023-07-30 19:49:41 +05:30
Kovid Goyal 7268513332 More tests 2023-07-30 19:49:41 +05:30
Kovid Goyal 71c7c4b285 Clean up delta generation algorithm implementation 2023-07-30 19:49:41 +05:30
Kovid Goyal 83d97c515c Use the iterator design for bytes based API as well 2023-07-30 19:49:41 +05:30
Kovid Goyal e7d02b79d7 Make diff internals private 2023-07-30 19:49:41 +05:30
Kovid Goyal 6bc0fc7615 Make serializing data ops avoid a double copy 2023-07-30 19:49:40 +05:30
Kovid Goyal f7723a65fa Removal original delta operation implementation
Mine is nicer and much more amenable to debugging
2023-07-30 19:49:40 +05:30
Kovid Goyal 35bfdbd926 ... 2023-07-30 19:49:40 +05:30
Kovid Goyal 3db2c4fe5d Make the test non-random 2023-07-30 19:49:40 +05:30
Kovid Goyal 74e0fa3f1d Show invocation line for failing test 2023-07-30 19:49:40 +05:30
Kovid Goyal 678ad627b2 Improve testing infra for rsync roundtrip 2023-07-30 19:49:40 +05:30
Kovid Goyal 26c93af565 ... 2023-07-30 19:49:40 +05:30
Kovid Goyal f27bb2103f Work on cleaning up the checksum searching algorithm 2023-07-30 19:49:40 +05:30
Kovid Goyal 4dc409ff5d Increase MaxBlockSize 2023-07-30 19:49:40 +05:30
Kovid Goyal 6a7c194d8f In the tests check that too much data is not being transmitted 2023-07-30 19:49:40 +05:30
Kovid Goyal 79fd0b19cf Fix a bug in upstream CreateDelta that could ignore trailing data if a matching hash is not found for it 2023-07-30 19:49:40 +05:30
Kovid Goyal 82721ef053 Check for error during seek() 2023-07-30 19:49:40 +05:30
Kovid Goyal 6d614a98ac Get the test to pass 2023-07-30 19:49:40 +05:30
Kovid Goyal 26c22f0086 Work on creating tests for rsync api 2023-07-30 19:49:40 +05:30
Kovid Goyal 278a3986e5 Simplify API a bit 2023-07-30 19:49:40 +05:30
Kovid Goyal 2801b934fb Split up API into two structs one for diffing and one for patching 2023-07-30 19:49:40 +05:30
Kovid Goyal a5c62da265 Dont use JSON for signature header 2023-07-30 19:49:39 +05:30
Kovid Goyal c28f6a7bf4 Make CreateSignature byte oriented 2023-07-30 19:49:39 +05:30
Kovid Goyal 71a1050b9f Make loading of external signature data also streaming 2023-07-30 19:49:39 +05:30