Re: git log -S not finding all commits?
- From
Matthieu Moy <matthieu.moy@grenoble-inp.fr>
- Date
- Oct 8, 2009, 11:40 UTC
- Message-ID
- <vpqbpkixgea.fsf@bauges.imag.fr>
- In-Reply-To
- <362436ca.6b5d0fc3.4acdc7e1.41b23@o2.pl>
Daniel <mjucde@o2.pl> writes:
Show 17 quoted lines
> Andreas Ericsson <ae@op5.se> wrote: > >> 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/