Commit Briefs

2f40f7d278 Stefan Sperling

call unveil earlier in 'got import'

We now know that unveil(2) will never traverse exec. No need to wait with unveil until the editor has been run. ok op@


cdaefb15ec Stefan Sperling

fix typo in a comment


ea5e974da9 Omar Polo

got-notify-http: fix unicode handling

JSON strings are made of UNICODE codepoints, of which only \, " and control characters have to be escaped, and the whole document MUST be encoded in UTF-8. The current code generates invalid strings for non-ASCII characters, so it has to be made UTF-8 aware. tedu' isu8cont() can't be used since it allows surrogate pairs and overlong sequences which will cause decoding errors on the receiving side. Similarly, mbtowc() depends on the current locale and could cause issues in -portable. Instead, bundle Björn Höhrmann's "Flexible and Economical UTF-8 Decoder" and use it to parse the text. Decoding errors results in the replacement character U+FFFD being emitted and the bytes considered so far to be discarded; the decoder is then restarted with the next byte. Git commit messages don't carry the notion of the encoding, but it's reasonable to expect UTF-8 (which is a superset of ASCII). For other more esotic encodings, the commit id can be used to manually extract the data. ok stsp@


87890bc26c Omar Polo

http_notification regress: prettify the json

long lines are not manegeable. split the json over multiple lines, then use ed to join everything back in a single one.


9e88f9d9a5 Omar Polo

regress: http-server: hide the HTTP headers

The http-server script is already validating the headers, doing so in the regress too is not helpful.


3b44bdbe82 Omar Polo

got-notify-http: reject 3XX status codes

At least for now, we don't support following redirects nor retrying the post, so consider a 3XX status a failure too.


83fccf2ddf Omar Polo

add my name in the bufio sources


0f665edb9f Omar Polo

adjust expected output in the regress


5565365ce7 Omar Polo

add got-notify-http

ok stsp@


f9e6537008 Omar Polo

fix gotd_parse_url()

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


fb5636bebb Omar Polo

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@


98297eed5b Stefan Sperling

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


371457e66c Stefan Sperling

remove a confusing comment

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


e12cc036c3 Stefan Sperling

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@


83e5e9a117 Stefan Sperling

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@


2afa256de5 Stefan Sperling

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@


38e11cc05b Stefan Sperling

add a utf8 todo item


494e2b9b6a Stefan Sperling

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


c237d8914d Omar Polo

render_notification: don't leak fd on error



54dbd95c88 Omar Polo

fmt


78e82c8a2a Stefan Sperling

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.



4e2fa922ce Stefan Sperling

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@