Commits


create and verify tags signed by SSH keys This adds a new -s flag to 'got tag' that specifies the signer identity (for example, a key file) of the tagger. The tag object will include a signature that validates each of the tag object headers and the tag message. Verifying these signed tags requires maintaining an allowed signers file which maps signer identities (i.e. the email address of the tagger) to SSH public keys. See ssh-keygen(1) for more details of the allowed signers file. After creating this file and providing the path to it in got.conf(5) using the allowed_signers option, tags may be verified using with 'got tag -V tag_name'. The return code will be non-zero if a signature fails to verify. ok stsp@


let gotadmin find the repository automatically if invoked in a work tree Move a small amount of code from worktree.c to a new file worktree_open.c, which contains everything required to open and close a work tree and inspect some of its basic parameters. This can be used by gotadmin. ok tracey


use a bloom filter to avoid pointless pack index searches


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.


add per-worktree got.conf(5) file in the .got directory; ok millert


cache delta data buffers in an LRU cache


remove worklist code; it was only used to unlink files which we already unlink


obtain repo format version and commit author name/email from .git/config


add support for reading .git/config; parser was based on isakmpd/conf.c


fix and simplify blame algorithm Always diff against latest version of file. This is much easier since there is no need to keep track of lines shifting around.


add 'make release' target; programs now have a version number


link _p versions of libraries if PROFILE=1; hint from claudio


make tog compile again


implement got_ref_write()


make 'got update' merge file edits


remove the pathset abstraction again; replaced by RB tree


properly remove empty directories left behind during updates


remove object_idcache; use object_idset instead


move object cache out of repository.c to its own file


add a Makefile hierarchy which builds the whole show


implement fork+exec (and by the way, fix the build...)


move object parsing code into a separate file


re-enable object cache; committed accidentally


in tog blame, set corret pointer to NULL after object close


fix typo in Makefile comments: CPLAGS -> CFLAGS