filter-branch: Fix to allow replacing submodules with another content
authorMichal Sojka <sojkam1@fel.cvut.cz>
Thu, 28 Jan 2010 09:08:46 +0000 (10:08 +0100)
committerJunio C Hamano <gitster@pobox.com>
Thu, 28 Jan 2010 21:49:53 +0000 (13:49 -0800)
commit03ca839537c9df35cc58085daa2b75febd373edd
treee5c8ecf6ad9fe89d232d642a98be8258294ac550
parentb2c2e4c22c6a4fe151f02380d247cf3d9a9d5d1e
filter-branch: Fix to allow replacing submodules with another content

When git filter-branch is used to replace a submodule with another
content, it always fails on the first commit.

Consider a repository with submod directory containing a submodule.  The
following command to remove the submodule and replace it with a file fails:

    git filter-branch --tree-filter 'rm -rf submod &&
                                     git rm -q submod &&
                                     mkdir submod &&
                                     touch submod/file'

with an error:

    error: submod: is a directory - add files inside instead

The reason is that git diff-index, which generates the first part of the
list of files updated by the tree filter, emits also the removed submodule
even if it was replaced by a real directory.

Signed-off-by: Michal Sojka <sojkam1@fel.cvut.cz>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-filter-branch.sh