From: Anselm Schüler Date: Mon, 24 Feb 2025 14:11:26 GMT Subject: Re: Possible bug: Empty magic word list in pathspec is handled differently in short vs. long form Message-ID: <5f312413-0b7d-4bcb-b180-57857afa3898@anselmschueler.com> In-Reply-To: Thank you and Lucas Oshiro for the clarification On 19/02/2025 18:11, Junio C Hamano wrote: > Anselm Schüler writes: > >> If you run git diff for a pathspec with an empty magic word/symbol >> list in short form (prefixed by ::) and in long form (prefixed by >> :():), you get different results. > The short form is prefixed by a ":" and optionally ends by a ":", > but the optional termination may not be required when there is no > ambiguity (e.g. ":/!path" is "from the top, not matching "path", as > "p" cannot be a magic signature; ":/:!path" is "from the top, > matching "!path", as the set of magic signatures ends with the > second disambiguating colon). > > The long form is prefixed by a ":(" and ends by a ")". > > >> Here’s an example use of git that illustrates this: >> >> ~☭ mkdir gittest >> ~☭ y gittest/ >> ~/gittest☭ git init >> Initialized empty Git repository in /home/anselmschueler/gittest/.git/ >> ~/gittest (b0)☭ uuidgen >file >> ~/gittest (b0)☭ git add file && git commit -m "$(read)" >> read> initial commit >> [b0 (root-commit) cd3bd43] initial commit >> 1 file changed, 1 insertion(+) >> create mode 100644 file >> ~/gittest (b0)☭ uuidgen >file >> ~/gittest (b0)☭ git diff -- "::file" >> >> file >> ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── >> >> ───┐ >> 1: │ >> ───┘ >> 66d18ffa-1128-42a5-8d4e-f9d75eb86b92 >> 9acea2b5-50a6-4f87-ae1a-64019a93e55e >> ~/gittest (b0)☭ git diff -- ":():file" >> ~/gittest (b0)☭ > Doesn't ":():file" ask for a match for the pattern ":file", with a > leading colon?