My bigger goal is to complete my --pathspec-from-file series of patches. For this, I needed to evaluate whether parse_branchname_arg() heuristics needs any changes when pathspec is passed, but NOT in args. I found it surprisingly hard to reason about the code in this function. This mostly happens due to "obfuscated" variables, where they have a clear name and a different actual meaning. Ultimately, it was hard to mentally expand them to true meaning AND see all possible combinations of branches at once. I have split this refactoring in 4 patches, so that diffs are not too big in every single patch. To my understanding, there should be no changes in git's behavior, except for a couple better die() messages. Alexandr Miloslavskiy (5): parse_branchname_arg(): fix dash_dash_pos, drop argcount parse_branchname_arg(): introduce expect_commit_only parse_branchname_arg(): update code comments parse_branchname_arg(): refactor the decision making t2024: cover more cases builtin/checkout.c | 174 ++++++++++++++++----------------------- t/t2024-checkout-dwim.sh | 27 ++++++ 2 files changed, 97 insertions(+), 104 deletions(-) base-commit: d9f6f3b6195a0ca35642561e530798ad1469bd41 Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-479%2FSyntevoAlex%2F%230225(git)_refactor_parse_branchname_arg-v1 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-479/SyntevoAlex/#0225(git)_refactor_parse_branchname_arg-v1 Pull-Request: https://github.com/gitgitgadget/git/pull/479 -- gitgitgadget