Commit Briefs

Thomas Adam

fix tag signing when the key file does not exist

This should fail without creating any tag. Before, ssh-keygen(1) would print an error to stderr, but got would create an unsigned tag. ok op@


Thomas Adam

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@


Thomas Adam

move got_opentempfd() out of lib/diff.c again

ok tracey


Thomas Adam

implement support for commit coloring in got-read-pack for speed

ok op, tracey



Thomas Adam

move got_errors[] table into a single compilation unit (error.c)

ok stsp


Thomas Adam

portable: make UUID includes generic

Move the detection of UUID header files to be included portably. This will have no functional effect until MacOS detection is put in place.


Thomas Adam

portable: remove extraneous strerror_r check

On a __GLIBC__ system, we need to use __xpg_strerror_r() -- this is already checked for, so simply one of these checks to reduce code changes from upstream.


Thomas Adam

for portability, handle errno variations upon open(2) failure with O_NOFOLLOW

Problem pointed out by naddy for FreeBSD -portable. Discussed with millert, thomas adam, and naddy.


Thomas Adam

portable: add FreeBSD support

This adds the capability to compile got-portable on FreeBSD.


Thomas Adam

sterror: use XPG version on GLIBC

It looks like autoconf 2.69 will not provide XPG strerror_r even if the appropriate macros are set which request the XPG version. Until this is fixed in autoconf and that version is more widely-adopted, this approach will provide what's required. Originally from Stefan Sperling, tweaked by me.


Thomas Adam

portable: initial Linux compilation

This commit modifies the GoT main branch to be able to compile it under linux.



Stefan Sperling

introduce got_custom_error array to support multiple errors in flight

This is still not thread-safe but at least avoids errors overwriting each other in single-threaded contexts.


Stefan Sperling

add got_error_fmt()

got_error_fmt() could eventually replace got_error_path() which has already been used to construct errors with strings that are not actually paths... ok millert@


Stefan Sperling

add got_error_from_errno_fmt() for more flexibility in error messages

suggested by and ok millert





Stefan Sperling

introduce got_error_path()



joshua stein

got_error_set_errno: take a char arg to pass to got_error_prefix_errno

$> got rm a got: : No such file or directory becomes $> got rm a got: /path/to/a: No such file or directory


joshua stein

got_error_from_errno -> got_error_prefix_errno

also add got_error_prefix_errno2 and got_error_prefix_errno3 which should hopefully all be merged into a single function with variadic args (but can't alloc mem)