Commit Briefs

d6a28ffe18 Omar Polo

use random seeds for murmurhash2

change the three hardcoded seeds to fresh ones generated on demand via arc4random. Suggested/fixed by and ok stsp@


d58ddaf3fc Christian Weisgerber

const-ify tables

ok thomas_adam millert


f602742610 Christian Weisgerber

consistently match size of hash variables to that returned by murmurhash

ok millert stsp



64a8571e12 Stefan Sperling

map raw object files into memory while packing if possible


2d467c6d02 Stefan Sperling

fix wrong function in error string of emitdelta()



6eab69f730 Stefan Sperling

make the number of elements in deltify's geartab explicit


5de743f8fd Stefan Sperling

fix seek to incorrect offset in the delta base when creating deltas

The stretchblk() function needs to compare data located after the block which has just been matched. However, upon entry it was resetting the file pointer of the delta base to the beginning(!) of the block. The other file is correctly positioned after the block. In many cases the data won't match and stretchblk() will not stretch the matched block. But when the data did happen to match this resulted in a bogus delta, and wrong file contents when the delta was applied. Fix this by setting the delta base file pointer to end of the block. Problem reported by naddy after our server refused a pack file which was sent by 'got send'. I could reproduce the issue by running the 'gotadmin pack' command on a copy of naddy's repository. ok naddy


0af64e8644 Stefan Sperling

plug a memory leak in an error path of got_deltify()


dd29967c8b Stefan Sperling

make got_deltify() rellocate the deltas array less often



740bba1c31 Stefan Sperling

allow the delta base file to lose its header between deltify_init and deltify

This simplifies pack file creation. A delta base could be read from a loose object, a packfile, or it might be available in a temporary file. All these cases can now be handled the same way. We may need to open, close, and re-open a given delta base multiple times while packing.


7550e799ee Stefan Sperling

check for errors from emitdelta() in got_deltify()




0d15f6dcf9 Stefan Sperling

in addblk(), only read data into buffer1 if we will compare it to buffer2

suggested by and ok naddy@



a893025fd2 Stefan Sperling

addblk: iterate over the correct number of entries after growing the array

ok naddy


e89540a95a Stefan Sperling

addblk: be more careful about expanding the blocks array when we outgrow it

fixes + ok naddy


51a494da48 Stefan Sperling

check a block's hash as well as its length before expensive comparisons

suggested by + ok naddy, and Ori agrees



22403ab711 Christian Weisgerber

deltify.c: explicitly include <endian.h> for be64toh()



5788893e05 Stefan Sperling

fix off-by-one error in delta length; from ori

git9 commit fbb2fb7c87d8edf58e22c84f575853dc9de79ac4