Commit Briefs
simplify ancestry checks in checkout, update, rebase, and merge
No behaviour change as the end result of the rewritten checks should be the same as before. We are just doing less work where possible. Patch by James Cook
portable: rework SHA detection
Simply the SHA detection by not predicating on libcrypto, but instead checking individual header files.
portable: remove sha1.h; found portably
Remove sha1.h as this is found portably across systems.
include sha2.h too where sha1.h is included
In preparation for wide sha256 support; stsp@ agrees. Change done mechanically with find . -iname \*.[cy] -exec sam {} + X ,x/<sha1\.h>/i/\n#include <sha2.h>
make got_commit_graph_iter_next use caller-provided storage for the id
and adjust the callers. discussed with and ok stsp@
plug leak in the commit graph iterator
We fail to release the memory for the nodes. To fix it however, we some consumer of the commit graph iterator need to be corrected: the returned pointer is safe to be used only up until the next iter_next call; save a copy it if it's needed afterwards too. ok stsp@
replace an indirect call to idset_add(), via add_node(), with a direct call
Avoids leaking the node structure returned from add_node(). ok op@
free commit on error path
while here drop the ternary too: if add_node succeeds `new_node' is non-NULL. ok stsp@
got_commit_graph_close: free tailq contents
The tailq should ideally be empty when we reach got_commit_graph_close, but consumer code may exit the commit graph loop earlier. spotted by and ok stsp@
portable: add back sys/queue.h
Now that the handling of including sys/queue.h is better, there's no need to remove those lines from the source. Copy the location of those original sys/queue.h lines from upstream at the same line number, so as to avoid any conflicts in the future.
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@
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@
portable: add FreeBSD support
This adds the capability to compile got-portable on FreeBSD.
portable: initial Linux compilation
This commit modifies the GoT main branch to be able to compile it under linux.
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