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@


fix imsg_add TREE_ENTRY: Result too large on i386 There's a math error when computing the size of one entries in the batching code. Reported by semarie, ok semarie stsp


fix leftovers from long -> int change when changing the line addresses to be int from long the report callaback was forgotten.


got patch: handle mangled whitespaces This makes 'got patch' try to ignore whitespaces when trying to match a hunk. Discused with and ok stsp@


got patch: don't loose the x bit when merging with diff3 This fixes a regression introduced with the diff3 merge: files merged this way have their permissions resetted after patch. The issue is due the fact that patch_file looks at a temporary files and not at the original "old file". Reported by and ok stsp@


aesthetic: rename regress to test_patch_rm_file drop the "simple" part, there's no "complex" way of removing files.


augment test_patch_add_line Try to create a file with more than one line, it would have catched an issue with my wip diff for ignore whitespaces in got patch. While here rename the function to drop "simple".


refactor the patch parser Introduce a patch_start routine that finds the next "diff" header (if there is one); the idea is to persist some state (commit id and wether it's a "git diff") while processing the content of the diff. It's needed because in the case of 'got diff' some information like the commit id are only present once at the beginning. As a consequence, the patch parser becomes slightly more robust (concatenating diffs produced by different means shouldn't confuse it anymore) and drops the support for "old" got diffs, the ones previous the introduction of the "commit -/+" header. ok tracey@


tog: remove count prefix timeout and bold output Suggested by naddy. block till non-numeric input is entered, and don't echo in bold. ok naddy@ op@ and stsp@


unconditionally set x/y pointers in view_get_split() suggested by and ok op@


make the diff algorithm used by 'tog diff' and 'tog blame' configurable ok jamsek


switch 'tog diff' and 'tog blame' to Myers diff for speed Make the choice of diff algorithm configurable by diff API users. The got and gotweb programs keep using Patience diffs which are prettier than Myers. But tog should be as fast as possible since it is being used interactively. If performance of Patience diff gets improved later we can consider switching tog back over to it. ok tracey jamsek


tog: fix C-d and G log view keymaps in horizontal split Account for the border so we don't scroll offscreen, and don't unset the load_all flag till all commits have been loaded so we take the correct path in log_move_cursor_down(). ok stsp@


fix fullscreen / split-screen toggle in tog ok jamsek


move more opentemp out of diffreg.c ok tracey


move remaining got_opentemp's out of blame. ok op@


tog: implement support for horizontal splitscreens Enable all main views to open primary child views in a horizontal split: log -> diff tree -> blame blame -> diff ref -> log Support is yet to be expanded to nested child views and key maps for manipulating split type and size. ok op@ and stsp@


tog: refactor log cursor movement in prep for hsplit Simplify the log input handler by moving (page)up/down and home/end logic into helper routines as we need to perform some checks on these cases when navigating the log view in horizontal splits. ok op@ and stsp@


fix split-screen issue in tog when moving focus from child view to parent view Reported by jamsek: $ tog # term wide enough to vsplit return # open commit f # fullscreen commit tab # should go to fullscreen log, but it splits the screen fix ok jamsek


fix recent regression in tog where split view was not restored after resize ok jamesk


make it possible to show just one tag with 'got tag -l' suggested by jrick ok jrick jamsek


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


move got_opentempfd out of blame_open ok stsp@ jrick@


pass the correct file to fdopen(); ok tracey


fix missed dup in open_blob per stsp@