Re: Filter-branch's "move tree to subdirectory" example fails with BSD sed?
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Apr 16, 2012, 17:03 UTC
- Message-ID
- <7vr4vnwqwo.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <20120416152737.GB14724@sigill.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 14 quoted lines
> I wish we could also get rid of the temporary index. It exists solely
> for the side effect of removing the existing entries (otherwise, you get
> both "foo" and "newsubdir/foo" in the resulting history). It would be
> nice if there was some flag to update-index to say "before you do
> anything, clear the existing index" (or I guess, "don't bother reading
> the existing index"). And then result could look like:
>
> git filter-branch --index-filter '
> git ls-files -sz |
> perl -0pe "s{\t}{\tnewsubdir/}" |
> git update-index --from-scratch -z --index-info
> ' HEAD
>
> which is IMHO much easier to read and understand.Wouldn't "git read-tree --prefix=newsubdir/" suffice without the pipeline? I.e.
git filter-branch --index-filter '
rm -f "$GIT_INDEX_FILE"
git read-tree --prefix=newsubdir/ "$GIT_COMMIT"
' HEAD