git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Bad git log behavior with multiple glob path arguments

From
JNJeremy Nickurak <jeremy@nickurak.ca>
Date
Mar 5, 2014, 05:56 UTC
Message-ID
<CA+eQo_21j=GzsvWAjxzr+aFYcPcnnyozySOo0m9bO-xJq_6a9A@mail.gmail.com>

git log seems to understand globs in the last path argument, and the last path argument only. I didn't see anything in the git log man page expressly saying this was to be expected, but it does seem like it ought to work for all the arguments or none of them.

Here's a little shell script I ended up using to convince myself I wasn't going crazy. I'd expect the same output for all of the git log test, since they all specify (either with globs or not) all the files added to the repository. Alternatively, if globs aren't expected to work, I'd at least expect all the glob tests to return nothing.

Note that glob matching doesn't seem to occur unless '--' is included. I'm not exactly clear on why that is.

#!/bin/sh
TESTREPO="$(pwd)/bad-glob-test-repo"
rm  -rf "$TESTREPO"

echo "Running tests in $TESTREPO" mkdir "$TESTREPO" cd "$TESTREPO" mkdir subdira mkdir subdirb mkdir subdirc

git init echo a > subdira/file.txt echo b > subdirb/file.txt echo c > subdirc/file.txt

git add subdira/file.txt git commit -m 'a'

git add subdirb/file.txt git commit -m 'b'

git add subdirc/file.txt git commit -m 'c'

echo Glob Test 1: git log --oneline -- 'subdira/*.txt' 'subdirb/*.txt' 'subdirc/*.txt' git log --oneline -- 'subdira/*.txt' 'subdirb/*.txt' 'subdirc/*.txt'

echo Glob Test 2: git log --oneline -- 'subdira/*.txt' 'subdirc/*.txt' 'subdirb/*.txt' git log --oneline -- 'subdira/*.txt' 'subdirc/*.txt' 'subdirb/*.txt'

echo Glob Test 3: git log --oneline -- 'subdirb/*.txt' 'subdira/*.txt' 'subdirc/*.txt' git log --oneline -- 'subdirb/*.txt' 'subdira/*.txt' 'subdirc/*.txt'

echo Glob Test 4: git log --oneline -- 'subdirb/*.txt' 'subdirc/*.txt' 'subdira/*.txt' git log --oneline -- 'subdirb/*.txt' 'subdirc/*.txt' 'subdira/*.txt'

echo Glob Test 5: git log --oneline -- 'subdirc/*.txt' 'subdira/*.txt' 'subdirb/*.txt' git log --oneline -- 'subdirc/*.txt' 'subdira/*.txt' 'subdirb/*.txt'

echo Glob Test 6: git log --oneline -- 'subdirc/*.txt' 'subdirb/*.txt' 'subdira/*.txt' git log --oneline -- 'subdirc/*.txt' 'subdirb/*.txt' 'subdira/*.txt'

echo Explicit Test 1: git log --oneline -- 'subdira/file.txt' 'subdirb/file.txt' 'subdirc/file.txt' git log --oneline -- 'subdira/file.txt' 'subdirb/file.txt' 'subdirc/file.txt'

echo Explicit Test 2: git log --oneline -- 'subdira/file.txt' 'subdirc/file.txt' 'subdirb/file.txt' git log --oneline -- 'subdira/file.txt' 'subdirc/file.txt' 'subdirb/file.txt'

echo Explicit Test 3: git log --oneline -- 'subdirb/file.txt' 'subdira/file.txt' 'subdirc/file.txt' git log --oneline -- 'subdirb/file.txt' 'subdira/file.txt' 'subdirc/file.txt'

echo Explicit Test 4: git log --oneline -- 'subdirb/file.txt' 'subdirc/file.txt' 'subdira/file.txt' git log --oneline -- 'subdirb/file.txt' 'subdirc/file.txt' 'subdira/file.txt'

echo Explicit Test 5: git log --oneline -- 'subdirc/file.txt' 'subdira/file.txt' 'subdirb/file.txt' git log --oneline -- 'subdirc/file.txt' 'subdira/file.txt' 'subdirb/file.txt'

echo Explicit Test 6: git log --oneline -- 'subdirc/file.txt' 'subdirb/file.txt' 'subdira/file.txt' git log --oneline -- 'subdirc/file.txt' 'subdirb/file.txt' 'subdira/file.txt'

-- 
Jeremy Nickurak -= Email/XMPP: -= jeremy@nickurak.ca =-
Next: Duy Nguyen
Message 1 of 3 in “Bad git log behavior with multiple glob path arguments”
  1. Jeremy NickurakMar 5, 2014
  2. Duy NguyenMar 5, 2014
  3. Jeremy NickurakMar 5, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.