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.
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)☭
Is there a reason for this? I couldn’t find it documented in the git glossary <https://git-scm.com/docs/gitglossary>.
I’m running git 2.47.2, built with Nix (nixpkgs commit 2ff53fe) from the kernel.org source tarball.
~Anselm Schüler ⚙️