Commit Briefs
sockets_launch: simplify listen() handling (portable)
* clean up the SOCKS_BACKLOG versus SOMAXCONN usage * factor out just one listen() call * slightly improve the logging by showing the socket "name" too. ok stsp@
make gotsysd-managed repositories readable for the _gotd group
This allows making the repositories readable by other user accounts, such as _gotwebd, by adding those users to the _gotd group.
make commit notifications only show the part of history unique to the branch
When a new branch is created, show all commits added on the branch relative to the HEAD branch, instead of showing just the tip commit. When branch history is changed with got send -f or git push -f, limit history traversal to a common ancestor with the HEAD branch, instead of walking the entire history until a root commit is found. Stacked branches will still show some extra history until they hit HEAD. This can be improved later. ok op@
set gotwebd pledges according to address families of listening sockets
We were implicitly relying on "inet" to provide "unix". Be more specific. ok op@
fix parallel processing of requests in gotwebd
Run just one server process per server declared in gotwebd.conf, instead of running additional server processes based on the "prefork" setting. The extra servers weren't actually used since they would all wake up together, only one of them would manage to accept a connection, and the others would fail wtth EWOULDBLOCK go back to sleep instead of handling other connections. Having a single listening process dispatch request across gotweb processes in a round-robin fashion actually allows requests to be processed in parallel as intended. We currently use a round-robin scheme which can still cause some requests to wait for a busy worker. This will be improved later. The "prefork" setting now only controls the number of gotweb workers which will be started. ok op@
portable: release 0.117 (tags/0.117)
portable: maint: add --force flag
When creating files for the dist tarball, add a flag to ignore if the working tree is dirty.
make 'got clone' set a got.conf default branch for fetching only, not sending
This will make 'got send' default to the work tree's current branch or the HEAD reference if not invoked in a work tree, rather than defaulting to sending the default branch found while cloning. Issue pointed out by op@ ok op@
add a gotsysd regress target which rebuilds binaries in the VM
Makes it easier to keep the same VM running for manual testing while tweaking the code.
gotsysd regress: run make clean in the template directory, else build can fail
Without make clean we would end up running a template binary built on the host system, which won't run in case libc.so is out sync between host and VM.
regress: git: don't load global/home configs
When running git(1) commands as part of the test suite, disallow git(1) from loading either the global or home gitconfig file. This has the ability to mess with the test and how they're setup. Each test already sets its own config so this is the preferred option anyway. OK stsp@
better fix for long loop bug during commit coloring with offloading
Repaint already queued commits in the main process instead of removing them from the queue. Otherwise we may never converge to a state where all commits are marked as skipped. Instead such commits can inherit color keep and we'll keep on asking got-read-pack to paint more commits for a very long time. ok op@
do not let got-read-pack paint parent commits which are not in its pack file
If any parent commit of the current commit is missing, stop iterating and return control to the main process. Fixes a case where offloading to got-read-pack resulted in an effectively endless loop. ok op@
improve selection of pack files for pinning in the open pack file cache
If two given pack files contain the same amount of requested commits, prefer the pack file which contains the larger amount of total objects to increase our chances of full history traversal. Also, require the first element of the list of requested commits to be present in the pack file since the caller will very likely try to process this commit immediately when we return. This fixes cases where offloading of commit coloring to got-read-pack was ineffective, causing us to take the slow path instead. ok op@