Re: checkout/update boiler plate for --filter-index?
- From
Johannes Sixt <j.sixt@viscovery.net>
- Date
- Mar 24, 2009, 07:21 UTC
- Message-ID
- <49C889E2.2080208@viscovery.net>
- In-Reply-To
- <580660BE-FDAB-4947-B409-1E8D5CBEF8EE@earth.care2.com>
Marcel Cary schrieb:
Show 16 quoted lines
> I'm trying to do a historical find-and-replace on my code: > > git grep -F foo > files > git filter-branch --index-filter " > cat `pwd`/files | xargs git checkout -- > cat `pwd`/files | xargs sed -i 's/foo/bar/g; ' > cat `pwd`/files | xargs git update-index -- > " ancestor..HEAD > > When I instead use --tree-filter and skip the checkout/update-index, it > works how I want (but it takes a while...). But when I use > --index-filter, the resulting history shows the "foo" to "bar" change > happening *after* new code is added, rather than originally adding "bar". > > How can I checkout just a few files and update them to take advantage of > the speed of index operations?
You cannot do that with the index filter because you need actual blob contents to operate on, but the index filter doesn't give you an opportunity to do that. The tree filter is the right filter to use. But you neither need 'git checkout' nor 'git update-index' in the filter - filter-branch calls them for you. (Oh, and get rid of that useless use of cat.)
-- Hannes