Commits


fix tag object leak introduced in previous commit


add tagged object IDs to reference list object ID map Fixes display of "/tags/..." commit ID decorators in tog which was broken in previous commits.


fix error return from got_reflist_object_id_map_create()


rename got_reflist_object_map_free to got_reflist_object_id_map_free


switch reflist to TAILQ; insert elements more efficiently for sorted input ok naddy


implement an object ID map for reference lists ok naddy


fix assignment to wrong pointer in got_ref_dup() ok naddy


use size_t for loop indices to avoid signedness warnings; from emaste@freebsd


convert all remaining instances of chmod(2) to fchmod(2) ok stsp


there is no need to grab locks when opening refs in got_ref_delete()


make dangling symbolic references show up in 'got ref -l' Storing a resolved ID for each reference list item was a bad idea. This ID cannot be resolved if a symbolic references points to a reference which does not exist. Such symrefs were skipped by got ref -l as a result. Just let users of reference lists resolve the IDs as needed.


make 'got ref -d' delete both loose and packed representations of the reference


do not rely on <zlib.h> to pull in <unistd.h> ok stsp


cope with directory entries returned from readdir(3) with type DT_UNKNOWN Such directory entries need special handling to make our directory traversal code work on filesystems that do not support the d_type optimization. I found this problem because references stored in the refs/ directory were not shown by 'got log' and 'tog log' when a repository is mounted over NFS. helpful feedback + ok millert@


fix got_ref_change_symref(); it changed the ref's name instead of its target