On 3/21/22 4:34 PM, Derrick Stolee via GitGitGadget wrote: > From: Derrick Stolee <derrickstolee@xxxxxxxxxx> > > The implementation of test_subcommand_inexact() was originally > introduced in e4d0c11c0 (repack: respect kept objects with '--write-midx > -b', 2021-12-20) with the intention to allow finding a subcommand based > on an initial set of arguments. The inexactness was intended as a way to > allow flexible options beyond that initial set, as opposed to > test_subcommand() which requires that the full list of options is > provided in its entirety. > > The implementation began by copying test_subcommand() and replaced the > repeated argument 'printf' statement to append ".*" instead of "," to > each argument. This has a few drawbacks: > > 1. Most importantly, this repeats the use of ".*" within 'expr', so the > inexact match is even more flexible than expected. It allows the list > of arguments to exist as a subsequence (with any other items included > between those arguments). > > 2. The line 'expr="$(expr%,}"' that previously removed a trailing comma > now no longer does anything, since the string ends with ".*". > > Both of these issues are fixed by keeping the addition of the comma in > the printf statement, then adding ".*" after stripping out the trailing > comma. > > All existing tests continue to pass with this change, since none of them > were taking advantage of this unintended flexibility. For some reason, I thought I had run all tests on my machine to passing, but I was wrong. Instead, t7700-repack.sh fails because of this test: test_expect_success '--write-midx -b packs non-kept objects' ' GIT_TRACE2_EVENT="$(pwd)/trace.txt" \ git repack --write-midx -a -b && test_subcommand_inexact git pack-objects --honor-pack-keep <trace.txt ' Specifically, "git pack-objects" has several options before "--honor-pack-keep" including the temporary pack name and a "--keep-true-parents" flag. So, this patch is incorrect about keeping things working. The options are: 1. Keep the repeated ".*" and be clear about the expectations. (This could drop the "remove trailing comma" line.) 2. Find another way to test this --write-midx behavior while keeping the stricter test_subcommand_inexact helper. 3. Something else??? Thanks, -Stolee