Re: git log -S not finding all commits?
From: Matthieu Moy <hidden>
Date: 2016-06-15 22:47:29
Daniel [off-list ref] writes:
Andreas Ericsson [off-list ref] wrote:quoted
Yes, it's the correct behaviour. -S finds only lines where what you search for was added or deleted. It counts the number of occurrences of what you specify in each resulting tree and only shows the commits where that number changed. In your case, searching for "Free data " would have printed both commits, since you first introduce that entire string and then remove it.Thanks. However, your suggestion doesn't work. It prints only commit 2. Maybe you meant: $ PAGER=cat git log --pickaxe-regex -S'Free data$' --oneline but that doesn't solve my problem. I want to find all commits which changed lines containing "Free data" (the example I posted is simplified). Seems I have to use "git log -p" and search its output using pager...
Search the ML's archives, this is a FAQ. People have proposed an option to allow log -S to actually search the diff (much slower, but sometimes what you really want), but AFAIK, no one wrote the code. But I think someone posted a small perl script along the lines of git log -p --format="%s\n%x00" | perl -0 -ne 'print if(/whatever-you-search/);' -- Matthieu Moy http://www-verimag.imag.fr/~moy/