Re: Filter-branch's "move tree to subdirectory" example fails with BSD sed?
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:53:36
Jeff King [off-list ref] writes:
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