Commits


inline struct got_object_id in struct got_object_qid Saves us from doing a malloc/free call for every item on the list. ok op@


pass an already open commit object to the blame callback ok op@


stop relying on commit cache for good performance of got_object_id_by_path() Instead of internally opening and closing the same commit object over and over again, require callers to pass an open commit object in. Avoids an inherent dependency on the commit object cache for reasonable performance. ok op@


remove unused variables to fix LLVM 13 warnings; ok stsp


switch from SIMPLEQ to equivalent STAILQ macros The singly-linked tail queue macros were added to OpenBSD 6.9 and are more widely available on other systems. ok stsp


make fclose(3) failure checks consistent; check 'fclose() == EOF' everywhere ok millert, naddy


fix a typo that triggered "munmap: Invalid argument" in got blame on FreeBSD ok stsp


remove redundant lines of code from close_file2_and_reuse_file1()


handle binary files in blame's custom file diff atomizer


implement custom atomizer for blame to reuse data and mappings across commits


remove stdbool.h where it's not needed


fix type of filesize output parameter of got_object_blob_dump_to_file()


allow for configuring a custom file atomizer with got_diff_get_config()


new blame algorithm which compares commit N-1 to N; with help from Neels


merge new diff implementation from the git.gameoftrees.org diff.git repository This new diff implementation was started by Neels Hofmeyr during the u2k20 hackathon and now replaces diffreg.c code lifted from the OpenBSD base system. The integration of this code into Got was done by me. Got now uses the patience diff algorithm by default. The diff.git repository will remain the primary repository for the diff code, which already compiles and runs on other operating systems such as Linux. Any fixes and improvements for files inherited from the diff.git repository should be written against that repository and synced to got.git afterwards.