From: Jeff King Date: Mon, 16 Apr 2012 17:13:07 GMT Subject: Re: Filter-branch's "move tree to subdirectory" example fails with BSD sed? Message-ID: <20120416171307.GA11221@sigill.intra.peff.net> In-Reply-To: <7vr4vnwqwo.fsf@alter.siamese.dyndns.org> On Mon, Apr 16, 2012 at 10:03:03AM -0700, Junio C Hamano wrote: > > git filter-branch --index-filter ' > > git ls-files -sz | > > perl -0pe "s{\t}{\tnewsubdir/}" | > > git update-index --from-scratch -z --index-info > > ' HEAD > > 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 Yeah, I think it does (at least it makes sense to me, and worked on a simple test case). I think I might use "git read-tree --empty" instead of "rm", as it is a little more obvious what is going on. But other than that, it is much more readable. It is a slight shame not to show an "ls-files | update-index" example, because that is the most general form. But since this form is quite often cut-and-paste by people, I think simple is better here. If we want to show a more complex example, then we should add it separately. -Peff