Commits


initialize and tidy up *branch_ref in got_worktree_histedit_continue()


got-notify-http: refactor jsonify() To support the other types of notifications, we can't just peek at the first byte and decide wether it's a short or long format. Refactor the parsing so that there's one main entrypoint, jsonify(), that calls jsonify_comment() or jsonify_comment_short() depending on the format of the line. Other "line types" will be added as a follow-up to support the other notification types.


fold some long lines


got-notify-http: change the layout of the json Split the author/committer in sub-fields, rename author -> committer in the short format parser and cache the author for the long format in case it's the same user as the committer. Put a copy of the first line of the commit message in the "short_message" field. There's some redundancy now, but it's to make consuming easier. ok stsp@


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


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


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


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@


fix typo in a comment


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@


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.


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.


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.


add my name in the bufio sources


adjust expected output in the regress


add got-notify-http ok stsp@


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


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@


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


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


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@


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@


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@


add a utf8 todo item


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