diff options
author | Michal Sojka <sojkam1@fel.cvut.cz> | 2010-01-28 10:08:46 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-01-28 13:49:53 -0800 |
commit | 03ca839537c9df35cc58085daa2b75febd373edd (patch) | |
tree | e5c8ecf6ad9fe89d232d642a98be8258294ac550 | |
parent | gitweb.js: Workaround for IE8 bug (diff) | |
download | tgif-03ca839537c9df35cc58085daa2b75febd373edd.tar.xz |
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>
-rwxr-xr-x | git-filter-branch.sh | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/git-filter-branch.sh b/git-filter-branch.sh index 195b5ef48e..7c4ad7dcf9 100755 --- a/git-filter-branch.sh +++ b/git-filter-branch.sh @@ -331,7 +331,7 @@ while read commit parents; do die "tree filter failed: $filter_tree" ( - git diff-index -r --name-only $commit && + git diff-index -r --name-only --ignore-submodules $commit && git ls-files --others ) > "$tempdir"/tree-state || exit git update-index --add --replace --remove --stdin \ |