This patchset is in response to build failures on GGG's Cirrus CI freebsd_12 build jobs[1] and was prompted by a discussion thread [2]. These failures seem to be caused by the behavior outlined in [3]. Changes from v3: * Replace `[ ]` with ` ` in regex for `test_wt_add_orphan_hint()` [4][5]. * Drop trailing `.*` from `invalid_ref_regex` [4][5]. * Change `[a-z-]` to `[-a-z]` in `bad_combo_regex` to better portray intent [4][5]. * Replace `\+` with `*` in `bad_combo_regex` as `\+` is not POSIX BRE and is a GNU extension [4][5]. * Drop "without PCRE support" from commit message [4]. * Reword commit message to reflect changes. 1. https://github.com/gitgitgadget/git/pull/1550/checks?check_run_id=14949695859 2. https://lore.kernel.org/git/CALnO6CDryTsguLshcQxx97ZxyY42Twu2hC2y1bLOsS-9zbqXMA@xxxxxxxxxxxxxx/ 3. https://stackoverflow.com/questions/4233159/grep-regex-whitespace-behavior 4. https://lore.kernel.org/git/axnxvnmo6ekhhccppinji73ivlandwuqs44epmq4pdefm7ukiv@ejz7bee5xjli/ 5. https://lore.kernel.org/git/xmqqiladw9h7.fsf@gitster.g/ Jacob Abel (3): t2400: drop no-op `--sq` from rev-parse call builtin/worktree.c: convert tab in advice to space t2400: rewrite regex to avoid unintentional PCRE builtin/worktree.c | 4 ++-- t/t2400-worktree-add.sh | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) Range-diff against v3: 1: 96c21c5bee = 1: 96c21c5bee t2400: drop no-op `--sq` from rev-parse call 2: ebfba2d602 = 2: ebfba2d602 builtin/worktree.c: convert tab in advice to space 3: dee0c8f350 ! 3: 13f61cd15a t2400: rewrite regex to avoid unintentional PCRE @@ Commit message t2400: rewrite regex to avoid unintentional PCRE Replace all cases of `\s` with ` ` as it is not part of POSIX BRE or ERE - and therefore not all versions of grep handle it without PCRE support. + and therefore not all versions of grep handle it. - For the same reason all cases of `\S` are replaced with `[^ ]`. It's not - an exact replacement but it is close enough for this use case. + For the same reason all cases of `\S` are replaced with `[^ ]`. It is + not an exact replacement but it is close enough for this use case. + + Also, do not write `\+` in BRE and expect it to mean 1 or more; + it is a GNU extension that may not work everywhere. + + Remove `.*` from the end of a pattern that is not right-anchored. Signed-off-by: Jacob Abel <jacobabel@xxxxxxxxxx> + Helped-by: Junio C Hamano <gitster@xxxxxxxxx> ## t/t2400-worktree-add.sh ## @@ t/t2400-worktree-add.sh: test_wt_add_orphan_hint () { @@ t/t2400-worktree-add.sh: test_wt_add_orphan_hint () { if [ $use_branch -eq 1 ] then - grep -E "^hint:\s+git worktree add --orphan -b \S+ \S+\s*$" actual -+ grep -E "^hint:[ ]+git worktree add --orphan -b [^ ]+ [^ ]+$" actual ++ grep -E "^hint: +git worktree add --orphan -b [^ ]+ [^ ]+$" actual else - grep -E "^hint:\s+git worktree add --orphan \S+\s*$" actual -+ grep -E "^hint:[ ]+git worktree add --orphan [^ ]+$" actual ++ grep -E "^hint: +git worktree add --orphan [^ ]+$" actual fi ' @@ t/t2400-worktree-add.sh: test_dwim_orphan () { local fetch_error_text="fatal: No local or remote refs exist despite at least one remote" && local orphan_hint="hint: If you meant to create a worktree containing a new orphan branch" && - local invalid_ref_regex="^fatal: invalid reference:\s\+.*" && -+ local invalid_ref_regex="^fatal: invalid reference: .*" && - local bad_combo_regex="^fatal: '[a-z-]\+' and '[a-z-]\+' cannot be used together" && +- local bad_combo_regex="^fatal: '[a-z-]\+' and '[a-z-]\+' cannot be used together" && ++ local invalid_ref_regex="^fatal: invalid reference: " && ++ local bad_combo_regex="^fatal: '[-a-z]*' and '[-a-z]*' cannot be used together" && local git_ns="repo" && + local dashc_args="-C $git_ns" && @@ t/t2400-worktree-add.sh: test_dwim_orphan () { headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) && headcontents=$(cat "$headpath") && -- 2.41.0