Commits


fix raw object size sent by got-read-pack


fix bogus 'permission denied' error when a file at work tree root is removed ok naddy


mark got_pack_stop_privsep_child() static; it is only used inside pack.c


fix a leaky ibuf. ok stsp


expose the reflist_insert() helper function as got_reflist_insert() This will be needed by 'gotadmin pack'.


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.


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)


in addblk(), only read data into buffer1 if we will compare it to buffer2 suggested by and ok naddy@


addblk() may seek in its input file; reposition the file pointer afterwards


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