Commit Briefs
CHANGES for 0.56 (tags/0.56)
make tog block other keys except Backspace after End/G is pressed
This should avoid unexpected behaviour resulting from unrelated key presses messing with the log view's state variables. Pointed out by tracey, and also discussed with jasper. ok tracey
make tog ignore Ctrl+L and B while loading all commits
Otherwise tog gets into a funky non-recoverable state if these keys are pressed instead of Backspace while commits are loading. bug found by + ok tracey
remove the 'ctrl+u' shortcut in favour of just 'g' as alias for 'Home'
Our use of ctrl+u was not consistent with vi(1) after all. Discussed with naddy, tb, and jasper on gameoftrees@
tweak implementation of separate send {} and fetch {} conf blocks
Tweak man page. Factor out repeated code in if/else branches in send_gotconfig_remotes(). ok stsp@
tog: add support for navigating to first/last item of log and diff views
The keybindings that we settled on are Home, Ctrl-u and g to go to the first item and End, G to go to the last. This resembles those commonly found elsewhere, eg vi/less. discussed with and ok stsp
provide separate send {} and fetch {} configuration blocks in got.conf
Feature requested by naddy. ok naddy, who also suggested some tweaks that will arrive shortly
use gmtime_r(3) instead of localtime_r(3) to display time in UTC as intended
Problem noticed by naddy due to failing regress tests at midnight, and then analyzed with additional help from millert. ok naddy
stop allowing empty send {} or fetch {} blocks; yacc complained about grammar
yacc has been complaining about "shift/reduce conflicts" since commit 16c4be8c1cab9456f9dd0468c27f8ab73235737e Revert that change for now. Not sure how it can be done properly. In any case, allowing empty config blocks is not very important.
fix seek to incorrect offset in the delta base when creating deltas
The stretchblk() function needs to compare data located after the block which has just been matched. However, upon entry it was resetting the file pointer of the delta base to the beginning(!) of the block. The other file is correctly positioned after the block. In many cases the data won't match and stretchblk() will not stretch the matched block. But when the data did happen to match this resulted in a bogus delta, and wrong file contents when the delta was applied. Fix this by setting the delta base file pointer to end of the block. Problem reported by naddy after our server refused a pack file which was sent by 'got send'. I could reproduce the issue by running the 'gotadmin pack' command on a copy of naddy's repository. ok naddy
make realloc_ids() malloc-like and do not overallocate
Let realloc_ids() take as argument the number of entries to allocate. Do not allocate an extra chunk. ok stsp
drop realloc_ids() initialization calls, one of which had a typo
realloc_ids() is called again in the loops that assign to the ID arrays, before the first assignment. ok stsp