Re: checkout/update boiler plate for --filter-index?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Mar 24, 2009 at 08:21:06AM +0100, Johannes Sixt wrote:

> 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.)

Well, you _could_ do it as an index-filter, which has the potential to
be much faster if you are only operating only on a small subset of the
files.  But it's much less readable. Something like (totally untested):

  git filter-branch --index-filter '
    for i in `cat /path/to/files`; do
      hash=$(git cat-file :$i |
             sed 's/foo/bar/' |
             git hash-object -w --stdin)
      git update-index --add --cacheinfo 100644 $hash $i
    done
  '

I'm sure you could do even do it with a constant number of processes per
commit by using update-index --index-info, hash-object --stdin-paths,
and cat-file --batch. But it would probably be even less readable. ;)

Personally, I would probably just do a tree-filter for simplicity unless
the repo size made it prohibitively slow.

-Peff
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux