Commits


fix deltas with trailing data that is smaller than the minimum chunk size


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.


check for errors from emitdelta() in got_deltify()


handle fseek in got_deltify() instead of in stretchblk(); simplifies the code


raw object size should not include the length of the object's header This way, the size of a raw object is the same regardless of whether the object was found in a loose object file or in a pack file.


introduce got_object_id_queue_copy() This will be required by a future 'gotadmin pack' command.


add a user data pointer to struct got_object_qid This will be required by a future 'gotadmin pack' command.


Allow for skipping the base object header in got_deltify().


typo


document how profiling works


make it possible to profile gotweb; tracey had the same diff


unveil gmon.out if gotweb is being profiled ok tracey


use socketpair(2) instead of pipe(2) for bi-directional communication On Linux, pipes returned from pipe(2) only work in one direction. This broke 'got clone' over ssh in the -portable version because got-fetch-pack assumes it can use its fetchfd for both reading and writing. I wrote a complicated diff to use two pipe(2) calls instead of one, but millert suggested a simpler solution: Use socketpair(2) instead of pipe(2). ok millert jrick tracey


fix hang in commit regress test. ok stsp


use Patience diff for merging during cherrypick/backout/histedit/rebase This has been shown to prevent mis-merges in some cases. It's probably not a final solution. We should look at what Git's "recursive merge" is doing and implement something similar. Keep using Myers during update/unstage. The advantage of Myers is that it produces smaller conflict chunks, and there are no known cases of mis-merges which affect update/unstage.