Re: [PATCH] filter-branch: Fix renaming a directory in the tree-filter
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Mar 31, 2008, 12:15 UTC
- Message-ID
- <alpine.LSU.1.00.0803311412090.18259@racer.site>
- In-Reply-To
- <7v3aq7mgly.fsf@gitster.siamese.dyndns.org>
Hi,
On Mon, 31 Mar 2008, Junio C Hamano wrote:
Show 23 quoted lines
> Johannes Sixt <johannes.sixt@telecom.at> writes: > > > 2. Then filter-branch checks out the files for the next commit. This > > leaves the new directory behind because there is no real "branch > > switching" involved that would notice that the directory can be > > removed. > > Thanks. > > It obviously is a correct fix to use "clean -d" here, but I strongly > suspect this awkwardness comes from the fact that there is no clear > invariant in this loop. > > For example, if you make it the invariant that $T contains the tree that > matches the contents of the "$tempdir/t" work tree left in the previous > round of filter-tree (and obviously you would want to do this only > filter_tree is in effect), the "checkout-index + clean" would become a > proper "branch switching". > > This is obviously untested, and you would need to prime $T with an empty > tree before entering the loop (but you could cheat by initializing T > with an empty string), but it might make the code a bit more readable > than the current mess. I dunno.
Yes, I'd prefer this.
Originally, I wanted to clean up filter-branch a little, but then somebody worked on a builtin version of it, which unfortunately came in after the code freeze, and I always waited for that thing to be picked up and enhanced. (AFAIR there were quite a few issues which made rewrite-commits much less useful than it should be.)
Ciao, Dscho