Commits
- 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()
- Commit:
30a624fb1ef8d2d9706a604cbf65dcdacf072e72
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
avoid a rename/stat race when gotd installs a new pack and then uses it
Reset the cached repository's pack directory mtime after installing a new
pack and pack index file. I have observed the mtime of the pack directory
as reported by stat(2) remaining unchanged, until some time has passed
beyond the rename(2) calls used to install the pack file and its index.
If gotd immediately tries to read objects installed in a new pack file then
the mtime reported by stat(2) might appear as unchanged. gotd will then fail
to update its cached list of pack index files and not find the newly
installed objects.
Clearing the cached timestamp forces a readdir(3) call which does expose
the newly installed pack index file as expected.
Not sure whether stat(2) is supposed to immediately expose mtime changes
after a rename(2). If so then this might warrant digging into the kernel.
Seen while running regression tests for upcoming gotd notification support.
- Commit:
10477b5aacb13088676c3bfd7e0fcc477ba2724e
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
reuse existing repository struct in gotd session update_ref()
Avoids pointlessly opening and closing a separate repository instance.
- Commit:
9c177e8d04414b7be4a02d64ed06dcc402a7b0a8
- From:
- Omar Polo <op@omarpolo.com>
- Date:
use a define for vi(1) path
This is intended to aid -portable, since other systems may have vi
installed in a different place, or maybe prefer to ship with a
different default editor.
ok stsp@
- Commit:
c5d61cbc3a9c337b669af6b330709b6b4d43c872
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
speed up got tag -l by caching timestamps in got_ref_cmp_tags()
performance problem reported by naddy@
- Commit:
5737d679619ac7bfa357277e0508f62d544d8385
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
bump version number
- Commit:
66e67abe8e18c74089af4706f3d79bdcf2bac30a
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
CHANGES for 0.97
- Commit:
102fba8b84c74851ac56ae5a99a5739e2a4b2514
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
add an xfail test for a case where rebase fails to forward a branch
Because 'got rebase' only does a first-parent traversal it will try to
rebase commits which appear in the history of a branch, even when the
branch to be rebased is already based on that history. This results in
spurious merge conflicts as existing changes get re-applied.
The desired behaviour would be that 'got rebase' forwards the branch,
as it does when the 'got merge -M' command used by this test case is
replaced by a simple 'got merge' which avoids creating a merge commit.
Problem reported by naddy in the "Landry's firefox repository" thread:
https://marc.gameoftrees.org/mail/1706721001.20565_0.html
- Commit:
4cbe2b468089c3a0d8cc4963ef0056060b82049a
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
add a test which checks what happens when rebasing onto a merge commit
- Commit:
13cd1d190795ee2b0bd10c7e4590dac2900cc248
- From:
- Stefan Sperling <stsp@stsp.name>
- Date:
add a test which checks what happens when a merge commit is rebased