Subject: Re: Another question about importing SVN with fast-import

From: "Shawn O. Pearce" <[email-masked]>
Date: Fri, 20 Jul 2007 01:11:42 -0400

David Frech <[email-masked]> wrote:
> On 7/16/07, Julian Phillips <[email-masked]> wrote:
> >Now the question.  Shawn recently added C and R operations - almost as
> >soon as they were asked for too.  However, how do you copy a file from a
> >particular revision?
> 
> I have to second Julian's question.

I'm getting to it.  Maybe this weekend.  Right now I have git-gui
work to finish, and that work is more important to me this week than
fast-import is.  Not that fast-import isn't important to me either,
its just the way things are this week.
 
> This is kind of a request and a comment/question. The request is:
> there is no way to do *reasonably* in the front end what fast-import
> can do somewhat reasonably: namely, copy a <path> (file or directory!)
> from an arbitrary previously committed revision/mark to the current
> branch.

I agree.
 
> The comment/question is: how different is this, really, from being
> able to  specify a "from" line in a commit? In both cases I'm asking
> fast-import to reach into its memory (or the repo) and pull out a
> tree, and to add (some or all of it) to my current branch. Isn't the
> kind of generic C command that Julian and I are asking for the same
> thing, only instead of taking the whole tree (from the specified
> commit) it takes a single file or directory?

It is possible.  I'm just not sure what the syntax for it should be.
Suggestions?  I really want to stay backwards compatible with the
current "C" command, so:

	'C' SP commit SP path SP path

is out because its ambiguous with the current meaning where the
second (destination) path can contain SP without being quoted by
the frontend.

> Lastly, do we really need "R"? With this generic copy - and I think
> there should be *only* a generic version, not a "streamlined local
> copy" version and a "reach into history arbitrarily" version - we can,
> as an earlier poster pointed out, do R by doing a C and then a D. This
> is, in fact, how svn dump files represent file and directory renames.

The code for "R" is so short that I just don't see a need to remove it.
Its also already out in the wild, as it has been in Junio's master for
a little while now.
 
-- 
Shawn.