author | Michal Sojka <sojkam1@fel.cvut.cz> | |
Thu, 28 Jan 2010 09:08:46 +0000 (10:08 +0100) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Thu, 28 Jan 2010 21:49:53 +0000 (13:49 -0800) | ||
commit | 03ca839537c9df35cc58085daa2b75febd373edd | |
tree | e5c8ecf6ad9fe89d232d642a98be8258294ac550 | tree | snapshot |
parent | b2c2e4c22c6a4fe151f02380d247cf3d9a9d5d1e | commit | diff |
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>
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 | diff | blob | history |