Chia-liang Kao <clkao@clkao.org> writes:
> I have been working on the subversion destination driver
> of VCP (http://public.perforce.com/public/revml/index.html)
>
> the motivation is to be able to convert a live repository
> into a branch in a subversion repository, and be able to
> convert new commits from the remote repository to that branch
> later on. this is good for working on aggresive changes to
> a project that still sticks with cvs.
This is great!
I'm trying to figure out how the VCP source driver for CVS handles
branches and tags that touch multiple files (for example, when you
branch or tag an entire directory tree). Just based on reading the
documentation, I get the feeling that VCP deals with one file at a
time, and doesn't attempt to unify CVS branch and tag events even
though the destination repository might support that.
The reason I'm asking is to find out how much our own cvs2svn tool
duplicates the work of VCP.
I saw this:
1. Metadata Scanning
Before anything else can happen, vcp must take the source
repository spec, something like cvs:module/dir/... and use the
appropriate repository interface (cvs log in this case) to
extract the metadata.
The metadata is currently kept all in memory; if you run in to a
repository so big that this is troublesome, do the transfer in
phases or pester us to provide a swap file capability for this
data.
... but it's not such a big deal if one can do the transfer in phases,
or if swap file capability would be easy to add.
> I've just converted VCP from its original perforce depot to
> http://svn.clkao.org/revml/. the trunk has the svn destination
> driver I added.
'svn log -v' on that repository shows no copied files. There were a
bunch added at the beginning, and then it's just "A"s and "M"s after
that. (Are there just no branches / tags?)
> as you could guess from the Map section above, branches are
> translated to the svn convention. the current implementation
> in the svn driver guesses the branch point and does `svn cp',
> but there should be more checks before doing so.
I guess there are just no branches in that repository, then.
> after the first run, you should remove the --init-svnrepo option.
> note that if the repository is not created by vcp, you need to
> make the pre-revprop-change hook exit with 0, since currently
> we use propset --revprop to set the commit time and author.
>
> as for performance, it took one hour to convert 612 revisions
> from p4 to svn. currently vcp invokes `svn' to do everything.
> native perl binding to subversion could help a lot.
Yes -- or, output to an svnadmin-style dumpfile, might be much faster
to do that and then load the dumpfile. (A RevML-to-SVNDumpfile
converter, I guess!)
> in the future, if someone happens to write the vcp source driver
> of svn, this could be a way to do inter-repository copying
> preserving revisions on both sides, which is good for long-time
> offline working.
>
> Hope this helps :)
Yes, thanks for letting us know!
-Karl
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Jun 7 21:36:37 2003