Commits
- Commit:
2afa256de5f9027b941e0a912d57fa5201a6cfc6
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
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@
- Commit:
38e11cc05b40eb2d4fe81868dccdf2c59494efa4
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
add a utf8 todo item
- Commit:
494e2b9b6acdb92382e65d0d9c990aaf8d3cbb22
- From:
- Kyle Ackerman <kackerman0102@gmail.com>
- Via:
- Stefan Sperling <stsp@stsp.name>
- Date:
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
- Commit:
c237d8914d9e7b85e50ad13b46083cdc61a78977
- From:
- Omar Polo <op@omarpolo.com>
- Date:
render_notification: don't leak fd on error
- Commit:
cef7eb79352370c77aee8fa482ededde42d8244e
- From:
- Omar Polo <op@omarpolo.com>
- Date:
don't ignore err while preparing notifications contents
- Commit:
54dbd95c889dfcd42c499f19d3af056f2a706791
- From:
- Omar Polo <op@omarpolo.com>
- Date:
fmt
- Commit:
78e82c8a2a2cd0fed316492b18264f5d8727f961
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
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.
- Commit:
daac4478f74fe96633ad055e02d74c781b34270c
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
update gotd TODO list; email notifications have been implemented
- Commit:
4e2fa922ceaa28b6bee21ecd9b09f62be5e1778f
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
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@
- Commit:
e8d451cc39fa03a3fd56b95b86c820491d399550
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
display process title in syslog when a gotd child process exits
- Commit:
e70fd95218f6bb77ff45fc0c94b8daeb6709ffa7
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
split gotd/session.c into session_read.c and session_write.c
This makes it easier to tweak the read/write code paths separately.
- Commit:
97a1ea05aadab5340a13a0a9760a7887f5779b9c
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
got-notify-email does not need libutil and libz; spotted by op@
- Commit:
1cb49b67c167a14c547143ce621e7573f59c82a3
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
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.
- Commit:
02dd6ee50e0e52c1581e43fb1910bc44604dcf7f
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
store repo_child_iev in gotd_session rather than gotd_session_client
- Commit:
818f96befdf8fe0b407ab7fec236b71d57bc3597
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
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.
- Commit:
09486e84b6094ffcb4dca9ecd2dea72a982a1fa9
- From:
- Omar Polo <op@omarpolo.com>
- Date:
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@
- Commit:
39910b637a9a53cc48b0c63766da691dec0af593
- From:
- Omar Polo <op@omarpolo.com>
- Date:
got-notify-email: split dial() out of send_email()
This allows to reduce the set of pledge(2) promises needed at runtime
down to only "stdio" which will also help sandboxing -portable.
ok stsp
- Commit:
100d3e4bb875b64f537d67257b0876159b59b068
- From:
- Omar Polo <op@omarpolo.com>
- Date:
mark smtp_timeout as static
- Commit:
dfa6ae4cb7d2e0474c8458b5622eca0385470c01
- From:
- Omar Polo <op@omarpolo.com>
- Date:
fmt
- Commit:
7d68253bffa1fdf653a220a4b023a653c2ed29df
- From:
- Omar Polo <op@omarpolo.com>
- Date:
plug memleak in parsing the notify options
The strings need to be released regardless of the process parsing
the file.
- Commit:
ba97b2d7ec97e54a025a39e04c0fd59fdd54a57b
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
add initial support for commit notifications to gotd(8)
At present only email notifications are implemented.
Code for HTTP notifications is not yet finished, hence HTTP-related
documentation remains hidden for now.
This adds a new 'notify' process which has an "exec" pledge. It runs
helper programs which implement the notification transport layer,
such as got-notify-email which speaks SMTP. This design avoids having
to link all of gotd with network libraries and related crypto libraries.
Notification content is generated by the 'repo_write' process. Commit log
messages and diffstats are written to a file which the 'notify' process
will pass on to its helpers on stdin. The default output looks similar
to 'got log -d'. If too many new commits are present the output looks
similar to 'got log -s' instead. Tags always look like 'got tag -l'.
The session process coordinates generation of notifications. It maintains
a notification queue which holds one notification per updated reference,
and passes notification requests from this queue to the 'repo_write'
process for notification content creation and then to the 'notify'
process for notification delivery.
Only one notification can be in flight at a time to avoid file descriptor
starvation if many references get updated in a single client session.
ok op@
- Commit:
0f8a0e25ffdf6a715f2a7528ef38eefaa474790a
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
make output of 'got ref -l' more consistent
Ensure that got ref -l provides consistent output regardless of
whether references are packed or not.
Problem reported by naddy@
Also make 'got ref -l name' work consistently when the provided
argument is the name of a reference, rather than a ref-prefix.
ok naddy
- Commit:
e0cc3e2b4793098f30708f83c18cf466a59aa9d3
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
introduce got_poll_read_full_timeout()
Upcoming gotd code needs to avoid infinite network socket read timeouts.
- Commit:
05fd31691c7f3c33867fb0acd5008fa2f555b461
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
add support for reading blobs to object_open_io.c
- Commit:
4c9b88110ffd0deb6eed9861f320246d8354bae2
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
introduce got_opentemp_truncatefd()