Commits
- Commit:
ce1bfad9f1f7c6b1599e0bfed0a1b169d4a30781
- From:
- Stefan Sperling <stsp@stsp.name>
- Via:
- Thomas Adam <thomas@xteddy.org>
- 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:
342fdad21f737bde2399231d772477d1b2221fe1
- From:
- Stefan Sperling <stsp@stsp.name>
- Via:
- Thomas Adam <thomas@xteddy.org>
- 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:
04ddbc75ae91738a071c04bb2f2d6c9ff4dac225
- From:
- Omar Polo <op@omarpolo.com>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
remove unneded wbuf->fd = -1
There's no need to set the fd to -1 on ibufs created with imsg_create(3),
and it was probably never needed.
- Commit:
3d97effaa4fe16c79f725bf260f06220e62e5c6a
- From:
- Omar Polo <op@omarpolo.com>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
convert to use imsg_get_fd()
While here also fix a fd leak in got-read-pack. We were dup'ing
imsg.fd without closing imsg.fd later; instead just use imsg_get_fd()
to extract the file descriptor.
Tested by falsifian and Kyle Ackerman, thanks!
'go ahead' stsp@
- Commit:
4efc8dcb177f6c378c12a7d91f51e6ae4e80078b
- From:
- Thomas Adam <thomas@xteddy.org>
- Date:
portable: gotd/gitwrapper: update for libs
Bring gotd and gitwrapper closer to how libraries are detected.
- Commit:
febe25b7cf7410d2a34c127b3981acd3b98edc2d
- From:
- Thomas Adam <thomas@xteddy.org>
- Date:
portable: gotd: listen
Include listen.c; make it portable.
- Commit:
2f1efc186f6bda57e8357f593f19883a7edb7895
- From:
- Thomas Adam <thomas@xteddy.org>
- Date:
portable: enable compiling gotd
This enables gotd -- for now, this is opt-in at compile-time, via:
./configure --enable-gotd
- Commit:
ff553ea7e0fb7b9ca9834780057bdd0f709339f5
- From:
- Stefan Sperling <stsp@stsp.name>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
fix typo in gotd debug messages: receving -> receiving
- Commit:
f9542c24c5340ee3ab60b432efa61c97bcc04381
- From:
- Stefan Sperling <stsp@stsp.name>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
fix spurious empty packfile error from gotd when rewinding a branch
ok op@
- Commit:
6d7eb4f7d125c942358a1f8edf1d350e74141112
- From:
- Stefan Sperling <stsp@stsp.name>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
add support for protecting references against 'got send -f' to gotd
ok op@
- Commit:
4fccd2fe0ffbbc668b66abe63614470635f92f1b
- From:
- Thomas Adam <thomas@xteddy.org>
- Date:
portable: configure: split out dependencies
Rather than assume all dependencies are required for all programs, split
them out.
This will make packaging easier, as well as splitting the code to use
subprojects.
Note that due to the use of config.h semantics, in most cases the
got_compat.h header file is now at the top of the .c file it is included
in, so that it can handle the system header inclusion properly.
- Commit:
42f290d4d3d7cc6d6385a343d6c20f58c6369305
- From:
- Omar Polo <op@omarpolo.com>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
gotd: remove more (all?) double process names in log
- Commit:
7161c4dc69ceb7852360acd62d0cba0da0d5afb4
- From:
- Josiah Frentsos <jfrent@tilde.team>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
gotd: Fix more double process names
Patch by Josiah Frentsos, thanks!
- Commit:
b16893ba284e90739fc814673523878e8874dc0f
- From:
- Omar Polo <op@omarpolo.com>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
add some helper functions to compute hashes
This adds a set of functions to abstract over SHA1Init, SHA1Update,
SHA1Final, their respective SHA256 variants and how to compare digests.
Replace all the SHA1*() usage with the new APIs. It's a preparatory
step for sha256 handling.
ok stsp@
- Commit:
98670ba726486c39efff220ab1e074c62023aae7
- From:
- Thomas Adam <thomas@xteddy.org>
- Date:
portable: rework SHA detection
Simply the SHA detection by not predicating on libcrypto, but instead
checking individual header files.
- Commit:
4680f704353811c8bb6ce65eac3714d1bd200c26
- From:
- Thomas Adam <thomas@xteddy.org>
- Date:
portable: remove sha1.h; found portably
Remove sha1.h as this is found portably across systems.
- Commit:
be288a59f42e0b5e203e2c5545bf3e042ff4b79f
- From:
- Omar Polo <op@omarpolo.com>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
rename lib/sha1.c to lib/hash.c
It will soon grow functions to deal with sha256 too. stsp@ agrees.
- Commit:
588a8092bc282294ee23585991e81586905a8fd4
- From:
- Omar Polo <op@omarpolo.com>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
include sha2.h too where sha1.h is included
In preparation for wide sha256 support; stsp@ agrees. Change done
mechanically with
find . -iname \*.[cy] -exec sam {} +
X ,x/<sha1\.h>/i/\n#include <sha2.h>
- Commit:
38bdc99fc83d59d7c507555551823c6e31c3cde0
- From:
- Stefan Sperling <stsp@stsp.name>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
remove recv_disconnect() from repo_write.c; missed in previous commit
- Commit:
92db09ff823dd814cbde563bb4455af59ba66415
- From:
- Stefan Sperling <stsp@stsp.name>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
do not expect to see a DISCONNECT message in repo processes
The parent no longer sends this message. Perform related cleanup
in the shutdown path instead.
ok op@
- Commit:
da2c57e47ed0bc5cab959b65eab66a3c6e7b1a61
- From:
- Mark Jamsek <mark@jamsek.dev>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
typo and style(9): do not use function calls in initialisers.
ok stsp@
- Commit:
49563dfbdbb8d9325ae207c0b1400dc6939fef40
- From:
- Omar Polo <op@omarpolo.com>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
gotd: implement the delete-refs capability
Allow clients to run "got send -d" against gotd. Clients will send a
zero-id as new id for a reference and, in the special but more common
case of just deleting and not updating, no pack file will be sent.
ok and tweaks by stsp@
- Commit:
d98779cd32c7a981ee70a8e1cbcb7c544a6110b6
- From:
- Stefan Sperling <stsp@stsp.name>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
gotd: fix "bad packfile with zero objects" error while creating branches
Clients will send an empty pack file if they are only creating new
references and have no objects to upload. Make gotd handle this and
add a regression test which triggers the bug. Problem found by op@.
The new regression test caught an unrelated issue where the client
connection was left lingering after references had been updated,
which made 'got send' followed by 'got clone -l' fail with the
connection limit configured for the test suite (just one connection
is allowed at a time). Fix this as well.
ok op@
- Commit:
fcbb06bf6925b542428b937afc9f37446058e748
- From:
- Omar Polo <op@omarpolo.com>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
replace malloc+memcpy with strndup. no functional change intended
ok stsp@
- Commit:
8652e5612d19bb8c006bbb4efcbb3554c67888b1
- From:
- Omar Polo <op@omarpolo.com>
- Via:
- Thomas Adam <thomas@xteddy.org>
- Date:
gotd: delete trailing blanks spotted while re-reading