Commit Briefs

Omar Polo

got-notify-http: fix I/O with TLS (again)

We try to handle early replies from the server, so we call tls_read() at each "tick" of the event loop. For the TLS case, however, bufio_read() will set bio->wantev, and if we rely only on it we can deadlock trying to read data from the server without having sent all the request. Found out the hard way while trying to send several notifications in one go. ok stsp


Stefan Sperling

revert part of previous commit; the parent process is not ephemeral

pointed out by op@


Stefan Sperling

prevent gotd notification process from exiting due to EPIPE

Ephermeral processes on the other end of a pipe might decide to exit which results in EPIPE when writing. This is not a fatal error but is somewhat expected during normal operation (at least until we improve the inter-process communication about notifications).





Stefan Sperling

fix got-fetch-http when chunked encoding is not used

We would end up raising a spurious error when the server had no more data to send and would abort the clone operation, while everything was fine in fact. Problem reported by vazub via IRC, thanks!



Omar Polo

replace date, strftime %G-%m-%d with %F

Use the more predictable %F, aka %Y-%m-%d, instead of %G-%m-%d. %G follows the definition of ISO-8601 week-based year, which is weird. In particular, 2024 is one of such years with weird behaviour: $ date -jf %Y-%m-%d +"%F %G-%m-%d" 2024-12-30 2024-12-30 2025-12-30 Diff from Lucas Gabriel Vuotto (thanks!); stsp agrees


Omar Polo

got-notify-email: sort/remove includes

we don't need getopt.h; getopt() is in unistd.h. also sort the headers while here. ok stsp@


Stefan Sperling

make 'got fetch' work with URLs which refer to $HOME via a tilde ~

'got clone' already happens to support such URLs via scp-style syntax: user@127.0.0.1:~/test.git While the clone operation succeded, subsequent fetch operations would raise an error: '/~/test.git' does not appear to be a git repository Make such URLs work when they are read back from got.conf, and also on the clone command line in canonical form: ssh://user@127.0.0.1/~/test.git Not adding a test case because I don't see an easy way to add test coverage for this without spilling test data into home directories or modifying ~/.ssh/ssh_config. Problem found by Jesper Wallin.


Stefan Sperling

bump version number


Stefan Sperling

CHANGES for 0.98 (tags/0.98)


Stefan Sperling

sync dist file list


Stefan Sperling

extend test_patch_empty_file() test coverage

Check what happens when patches attempt to edit or delete empty files.


Omar Polo

got patch: fix applying on empty files

if we've reached EOF without finding a match is fine if and only if the target file is empty, so add this exception. reported by naddy, ok stsp


Omar Polo

got-notify-http: use a UNIX timestamp for the date

Was suggested by Lucas some time ago. ok stsp@ with a tweak in the manual.






Stefan Sperling

require -R option for staging or unstaging directory contents

-R is needed on almost all other commands so this makes things consistent. Patch by Lorenz (xha)


Stefan Sperling

make got-fetch-http pass "done\n" through rather than faking it

Without this we exit the loop early and got-fetch-pack sees unexpected end-of-file on stdout trying to write its final "done\n" message. ok op@