Commit Briefs

2403c80c37 Thomas Adam

add my name in the bufio sources


c97a1399a0 Thomas Adam

adjust expected output in the regress


94a3f4e929 Thomas Adam

add got-notify-http

ok stsp@


bc0cdda132 Thomas Adam

fix gotd_parse_url()

A path of "/" is valid and trailing slashes must be preserved. ok stsp@


24a2826aba Thomas Adam

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@


0279329dcc Thomas Adam

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().


473cd2ee73 Thomas Adam

remove a confusing comment

This function starts a breadth-first traversal, not necessarily first-parent.


807c60e9b0 Thomas Adam

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@


e6fdf1dda4 Thomas Adam

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@


827e685d40 Thomas Adam

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@


f389ec8a9c Thomas Adam

add a utf8 todo item


f8c03d0287 Thomas Adam

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


22af6a95d1 Thomas Adam

render_notification: don't leak fd on error


bc16f51e71 Thomas Adam

don't ignore err while preparing notifications contents


af4fddcd55 Thomas Adam

fmt


e06005c30f Thomas Adam

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.



686e9b9ac6 Thomas Adam

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@



92eb042639 Thomas Adam

split gotd/session.c into session_read.c and session_write.c

This makes it easier to tweak the read/write code paths separately.



b92adf1098 Thomas Adam

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.



176350bfc1 Thomas Adam

track session state in struct gotd_session instead of got_session_client

Eventually, I would like to disconnect clients before notifications are generated. This change helps pave the way towards this goal.


5e7fdc369f Thomas Adam

got-notify-email: bufferize smtp parsing

instead of read(2)ing one byte at the time, use a temporary buffer. Special care is needed for the regress where all the replies are queued up-front instead of a real SMTP server where we'd get a reply only after a command. ok and improvements stsp@