Commit Briefs

35cdfa2c87 Thomas Adam

use struct got_object_id instead of sha1 digest in a few imsg

change got_img_commit_painting_request, got_imsg_tag_object and the data of GOT_IMSG_TRAVERSED_COMMITS not to copy the sha1 digest to the imsg buffer and then from it to a new struct got_object_id but send directly the whole struct. ok stsp@


7abf18632a Thomas Adam

got: further fetch tweaks to prevent unintended fetches

Implement stsp's suggestion to only fetch remote's HEAD if the symref refs/remote/*/HEAD exists, and its target no longer matches the remote HEAD. This ensures users tracking a project won't miss a change in HEAD, while also fixing the issue reported by naddy where HEAD was fetched by default even though a specific, potentially less active, branch is cloned, resulting in a repository with more commits than necessary. In addition, unless 'got fetch -b <branch>' is used, the remote HEAD branch will be fetched if branches are not set in got.conf and there is no work tree to ascertain a branch, or said branches are not found on the server. ok stsp@


e0380e3dfa Thomas Adam

special case 'got fetch -b <branch>' to only fetch <branch>

As discussed on irc, this drops the implicit remote HEAD fetch when -b is used. got.1 has been updated to make the new fetch behaviour clear. ok stsp@


9d0a7ee351 Thomas Adam

fix interaction of 'got fetch -b', got.conf, and work tree

Without branches in got.conf for a remote, and without -b/-R options, the fallback to HEAD would only work when not invoked in a work tree. With this fix 'got fetch' should behave as described in the man page. The -b option now overrides both got.conf and the fallback to the work tree's branch. And fallback to HEAD works as expected when invoked in a repository. Also, do not strictly require remote repositories to provide a branch from the refs/heads/ namespace. In such cases users should be able to use -R to select something to fetch. ok jamsek


b091c2cda9 Thomas Adam

got-read-gitconfig: send key-value pairs for extensions

Most extension allow only for a boolean value so the current behaviour of just sending the extension with a trueish value is fine. However, some extensions that we could eventually support (like "objectformat") have a string value. This is a preparatory step towards that. ok stsp@


e4c85b4990 Thomas Adam

got_imsg_commit_object: use struct instead of buffer for id

ok stsp@


fc842fc804 Thomas Adam

got_imsg_object: use struct instead of buffer for id

ok stsp@


0f23036a1e Thomas Adam

got_imsg_send_remote_ref: use struct instead of buffer for id

ok stsp@


ea58e97428 Thomas Adam

got_imsg_send_ref: use struct instead of buffer for id

ok stsp@


9228a15c47 Thomas Adam

got_imsg_fetch_ref: use struct instead of buffer for id

ok stsp@


f9f544689c Thomas Adam

got_imsg_fetch_have_ref: use struct instead of buffer for id

ok stsp@


564a8b0186 Thomas Adam

got_imsg_raw_delta: use struct instead of buffer for id

ok stsp@


d77295e349 Thomas Adam

got_imsg_raw_delta_request: use struct instead of buffer for id

ok stsp@


b6f6773045 Thomas Adam

got_imsg_packed_object: use struct instead of buffer for id

ok stsp@


c44c7d6e16 Thomas Adam

avoid copying reused deltas to delta cache file; copy from pack file instead

ok op@


3fe5d0fee4 Thomas Adam

got send: show server error

Print the error message reported by the remote server when failing to update a branch (for e.g. because of a server-side check.) Reported by gonzalo@, with help and ok stsp@.


66e6097f5d Thomas Adam

convert got_pack' filesize to off_t; ok stsp@


a777fdc085 Thomas Adam

move declaration of got_privsep_child out of got_lib_privsep.h

This declaration is the only reason why got_lib_privsep.h must be included in order to use got_lib_repository.h. Moving this declaration will allow for cleaning up unnecessary includes of got_lib_privsep.h.


37e766f45c Thomas Adam

ensure got patch respects x-bit perms for new files

Reported by stsp on IRC: got patch failed to set the x-bit for a new file despite got diff recording mode 755. Parse got and git diffs for this data and set file modes accordingly. Tweaked with hint from op. ok stsp@


b6b86fd1b9 Thomas Adam

remove trailing whitespace; patch by Josiah Frentsos


ff5e1f0963 Thomas Adam

add signer_id option to got.conf(5)

Setting this option will cause 'got tag' to sign all created tags using the SSH key, unless overridden by the -s flag. ok stsp@


871bd03807 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@


ec2b23c5d2 Thomas Adam

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

ok op, tracey


016bfe4bc2 Thomas Adam

use the commitid in the patch diff3 conflict header

suggested by and ok stsp@


0f76ab831b Thomas Adam

got patch: use diff3 to merge the changes

Parse the "blob -" metadata in diffs produced by 'got diff' and use the original file for patching. Then, use the diff3 with the current version of the file to merge the differences. This solves many failures automagically or at least turns them into a conflict. ok/improvements stsp@