Commit Briefs
gitconfig.c: look for comments after trimming the start of the line
This fixes the (harmless) errors raised by gitconfig.c on indented comment lines and adds a test case for it. Reported by James Cook, thanks! ok stsp@
gotwebd.conf: sync defaults
The first example is meant to show the default values for all the options. Sync with reality.
fix 'got merge' so it parses gitconfig for author
cmd_merge is the only subcommand that may create commits that doesn't parse the git config files, thusly failing for users without GOT_AUTHOR defined. Problem reported by James Cook who also provided an initial test case, thanks! ok jamsek
fix "got fetch" hang against out-of-date remote repositories
Do not assume that remote repositories will always have our objects. In Git protocol terms: Do not wait for an ACK from the server before sending the final "done" message. Otherwise servers might be waiting for more have-lines from us in order to find a common ancestor, which will never be sent by us. Problem reported by James Cook who also provided an initial test case ok op@
use newly publicised diff_chunk_type() diff API
To skip chunks without newly added lines. ok stsp@
sync files from diff.git e78a8d73c23ee314fdbdf110d5c55866c9ef9680
Moves diff_chunk_type into the public diff API.
use chunk offset to efficiently detect conflict markers
Rather than skip lines, use the new diff APIs to directly seek to each chunk with newly added lines for more efficient conflict marker detection. ok stsp@
sync files from diff.git f26db7cd2804ebc6a3f81e7e00e008450eb42228
Contains new APIs for chunk offset retrieval.
extend test_import_ignores test coverage
Cover the case where a regular file would match if the ignore pattern did not have a trailing slash.
use struct got_object_id instead of sha1 digest in a few imsg
change got_img_commit_painting_request, got_imsg_tag_object and the data of GOT_IMSG_TRAVERSED_COMMITS not to copy the sha1 digest to the imsg buffer and then from it to a new struct got_object_id but send directly the whole struct. ok stsp@
optimise parsing of modified files for conflict markers
As per stsp's original design for detecting new conflicts, rather than produce a diff formatted for human consumption, parse the raw diff result to scan only newly added lines for conflict markers. While here, fix a couple related bugs in the original implementation: (1) rewind the versioned file blob so we don't end up with an empty "from" (i.e., LHS of the diff) file; and (2) force an ASCII text diff for so we don't miss conflicts in binary files. ok stsp@
gitconfig.c: fix read/write out of bounds
conf_parse_line advances the `line' pointer without decrementing the line size `sz'. This makes the parsing code mistakingly reading from the next line (`line' is just a pointer in a bigger buffer that holds the whole file) and may mangle it by writing NUL bytes in it. Add also a new regress case to trigger this case. Reported by falsifian on IRC, thanks! ok stsp@
gitconfig.c: fix printing of debugging logs
all the othe LOG_DBG calls assume \n is implicit (like with err(3)), so remove the only explicit \n and make log_debug printing a newline too.
add ci/he/mg/rb -C option to commit unresolved conflicts
As per stsp's suggestion and building on his initial diff, add the -C option to enable creating commits with unresolved conflicts to the commit, histedit, merge, and rebase commands to allow continuing the operation despite files in conflict status. Also, only search for conflict markers in newly added lines to enable working with files already under version control that may have conflict markers embedded verbatim. lots of tweaks, improvements, and initial diff + ok stsp@
got: further fetch tweaks to prevent unintended fetches
Implement stsp's suggestion to only fetch remote's HEAD if the symref refs/remote/*/HEAD exists, and its target no longer matches the remote HEAD. This ensures users tracking a project won't miss a change in HEAD, while also fixing the issue reported by naddy where HEAD was fetched by default even though a specific, potentially less active, branch is cloned, resulting in a repository with more commits than necessary. In addition, unless 'got fetch -b <branch>' is used, the remote HEAD branch will be fetched if branches are not set in got.conf and there is no work tree to ascertain a branch, or said branches are not found on the server. ok stsp@
unbreak send.sh regress from recent ref-delta changes
fix argument order typo in flags passed to got_pack_create()