Commit Briefs
http_notification regress: prettify the json
long lines are not manegeable. split the json over multiple lines, then use ed to join everything back in a single one.
regress: http-server: hide the HTTP headers
The http-server script is already validating the headers, doing so in the regress too is not helpful.
got-notify-http: reject 3XX status codes
At least for now, we don't support following redirects nor retrying the post, so consider a 3XX status a failure too.
add got-notify-http
ok stsp@
fix gotd_parse_url()
A path of "/" is valid and trailing slashes must be preserved. ok stsp@
add a messagelen field in the notifications
Similar to the `got cat' output; it's needed to un-ambiguosly parse the content of the notification, which is already useful to parse the email content and invaluable for the upcoming got-notify-http. ok stsp@
rename got_commit_graph_iter_start() to got_commit_graph_bfsort()
This function begins a breadth-first traversal. The new name makes it easier to distinguish from got_commit_graph_toposort().
remove a confusing comment
This function starts a breadth-first traversal, not necessarily first-parent.
make 'got rebase' find a merge base with topological sorting if needed
Fixes a problematic case of spurious conflicts encountered by naddy@ on landry's firefox package git repository. The current implementation of toposort is expensive, so this might make rebase appear to run slowly on large repositories. However, this is better than letting users deal with spurious conflicts. ok op@
add log -t option which enables topological sorting of commits
Because the current implementation of toposort is expensive, add a flag which enables it. I would rather not have this option and just use toposort by default, however more work is required to achieve acceptable performance. ok op@
add support for topological sorting to the commit graph
The algorithm implemented here is based on a description I read on github's blog. See code comments for details. ok op@
plug a memory leak in 'got blame'
The leak is present in got_privsep_recv_traversed_commits. There is an edge case where it receives consecutive imsgs. The first behaves as normal and we got_object_id_dup the last commit id for changed_commit_id. The following imsg(s) then still allocates the last commit id, leaking the one(s) prior allocated. Patch by Kyle Ackerman
remove GOT_ERR_ITER_BUSY from got_commit_graph_iter_start()
Just clear any left-over iteration state and begin a fresh iteration instead of returning GOT_ERR_ITER_BUSY if the caller did not loop through the entire graph. This change currently doesn't matter much since all existing callers only do a single pass over the graph. But it frees up an error code and makes this API more flexible.
hide a pointless end-of-file error on imsg pipe in libexec helpers
This error popped up in op's regress builder: got-fetch-pack: error 118 "test-repo: Permission denied": poll: unexpected end of file ok op@
split gotd/session.c into session_read.c and session_write.c
This makes it easier to tweak the read/write code paths separately.
get rid of gotd client_id field where it is not needed
This ID was necessary back when session and repo processes supported connections from multiple clients. Nowadays, these processes run per connection and exit once a single client session has been served. The other processes already identify the client via the session/repo file descriptor which has sent an imsg.