Re: [PATCH] filter-branch fix and tests
- From
Johannes Sixt <j.sixt@viscovery.net>
- Date
- Jan 27, 2010, 16:18 UTC
- Message-ID
- <4B606748.2050209@viscovery.net>
- In-Reply-To
- <201001271649.19287.sojkam1@fel.cvut.cz>
Michal Sojka schrieb:
> +orig_head=`git show-ref --hash HEAD` > +export orig_head
You place the tree filter in double-quotes. Hence, orig_head will be interpolated on the filter-branch command line. You don't need to export it.
Show 8 quoted lines
> +test_expect_success 'rewrite submodule with another content' '
> + git filter-branch --tree-filter "test -d submod && {
> + rm -rf submod &&
> + git rm -rf --quiet submod &&
> + mkdir submod &&
> + : > submod/file
> + } || : &&
> + test $orig_head != `git show-ref --hash HEAD`"What is the purpose of the check in the last line?
As long as you have another command after the "} || : &&", you can just write "}" instead.
Show 6 quoted lines
> +test_expect_failure 'checkout submodule during rewrite' ' > + git reset --hard original && > + git filter-branch -f --tree-filter \ > + "git submodule update --init && > + cd submod && > + git reset --hard origin/master" HEAD
You must not change the directory without changing back. Use a sub-shell.
I'm not sure whether it's worth catering for this use-case anyway. Replacing a submodule commit should really be done only in the --index-filter. The tree that --tree-filter checks out is intended only as a temporary scratch area. It is not intended as a full worktree. In particular, since 'submodule update --init' changes the configuration, it is extremly dangerous to call from a filter.
-- Hannes