Commits


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.


check for close(2) error in got_repo_close() and propagate errors up ok tracey


close all opened repo->gitdir_fd's and set open_repo static. ok naddy (with static change)