Commit Briefs
regress: fetch -b/got.conf/wt/remote HEAD interaction
The added test checks we honour the correct precedence of branches to be fetched, which is determined by: the -b flag; branches set in got.conf; the work tree's current branch; and the remote repository's HEAD branch. If a branch is specified with -b, only fetch this branch and if it does not exist, simply report to the user--do not fallback to other branches. Otherwise, if branches are either not set in got.conf or are set but do not exist on the server: - if invoked in a work tree, fallback to the work tree's current branch - if not in a work tree or the work tree's current branch does not exist on the server: - fallback to remote HEAD. With this, only the -b case can result in an unsuccessful fetch due to the requested branch(es) not existing on the server. All other cases will either fetch updates or report "Already up-to-date" (excepting errors). ok stsp@
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@
lib/object_create.c: calloc object ids
future fields added to the got_object_id will be implicitly zeroed instead of gibberish. ok stsp@
gotwebd: abort blame if the client disconnect midway thru
Without setting err when the callback fails we continue the blame machinery.
garbage-collect redundant read_logmsg() parameter
As identified and suggested by stsp, with the previous commit, 'strip_comments' is now always set thus no longer needed. ok stsp@
got: use timestamp and emptiness to validate log message
As suggested by naddy: consider commit log messages valid provided the temp file time stamp has changed and the file is not empty. This heuristic provides the desired behaviour (i.e., reusing cherrypicked/backed-out log messages) that's currently provided but is simpler to grok. Improved by and ok stsp@
convert two files to utf8
ok stsp
do not expect to see a DISCONNECT message in repo processes
The parent no longer sends this message. Perform related cleanup in the shutdown path instead. ok op@
fix gotd segfault in libevent while disconnecting clients
Sending a DISCONNECT message to the repo process and then killing it and freeing its structure won't work. The message ends up on internal libevent queues and will soon crash because we have freed the memory for the event structre. Sending that message is a leftover from the times when the repo procs were persistent.
make edits made to comments count as a log message modification
This supports use of cherrypick/backout without requiring the user to modify the log message of the original commit. ok jamsek, op
fix gotd and gotsh usage() function declaration
"function declaration isn't a prototype" should fix the error seen by tracey@ on sparc64
make gotd parent dispatch handlers more robust during teardown
We have observed gotd exiting after "cannot find client for fd N" errors. If this occurs then we are likely in the process of disconnecting a client session while processing an event from a child process. Treat the above error as non-fatal and stop processing more events from the child process.
tog: reset 1 second refresh rate after starting search
This fixes an issue reported by Mikhail where CPU usage continuously increases if search is started after the refresh rate has dropped from 100ms to 1s by resetting the 1s refresh rate if search is started after fast initialisation has finished. This is not needed in limit_log_view() because the 1s refresh rate is reset in draw_commits() once the screen is redrawn (i.e., commits_needed == 0). Tested by and based on initial patch from Mikhail. ok stsp@
drop double process name from some gotd logs
i.e. "listen: listen: shutting down" -> "listen: shutting down" the procname is already prepended by vlog() ok jamsek
portable: make bison's location configurable
Some systems have bison (yacc) in a non-standard location. Since Autotolls is setting the YACC environment variable based on the AC_PROG_YACC macro, let the user override this if YACC is set in the environment already. This issue was found by a user of MacPorts. I did not get any feedback from them as to whether this worked, but my own testing indicates this should work.