Commits


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@


copy whole object id not only the sha1; missed in previous commits


tweak send_zero_refs; use GOT_SHA1_STRING_ZERO 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.


gitconfig.c: unbreak build when GITCONFIG_DEBUG is defined


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@


use SHA1_DIGEST_LENGTH instead of sizeof(id) ok stsp


update regress for fetch tweaks added in previous commit 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()


got-build-regress.sh: build gotd too; ok stsp@


unbreak gotd build after recent change to got_pack_create


mention GOT_TEST_PACK=ref-delta in the README too


got-build-regress.sh: add another round of testing with ref-deltas ok stsp


regress: run gotadmin pack -D if $GOT_TEST_PACK=ref-delta ok stsp


gotadmin pack: add a -D flag to force using ref-delta Intended mostly for the regress suite, so we'll be able to test also the ref-delta code paths. ok stsp@


got-build-regress.sh: use -eq/-ne instead of ==/!= for numbers


regress: allow to run only a subset of the test cases This allows to run only the test cases named on the command line.


add -n to 'got commit' usage; patch by Josiah Frentsos


keep regress testname copypasta fix from 2a19e2e21a s/fetch_branch/fetch_honor_wt_conf_bflag so we don't report the wrong test in the case of failure. The incorrect testname was introduced in 1cb79834ea as the result of too much copypasta. It was subsequently fixed in 2a19e2e21a but then backed-out.


backout got: always fetch remote HEAD except when -b is used As pointed out by naddy, this behaviour is not ideal when users want to limit their repository to a particular branch which will diverge from HEAD over time, such as -stable branches. See https://marc.gameoftrees.org/mail/1676388048.8632_0.html


got: always fetch remote HEAD except when -b is used Rather than only fetch HEAD when there are no branches set in got.conf and there is no branch to be inferred from a work tree, or said branches don't exist on the server, always fetch HEAD unless 'got fetch -b branch' is used. ok stsp@


got.1: tweak commit -A description. ok jamsek