Re: [SVN-MIGRATION] Steps for the SVN migration

[email protected] (Gwynne Raskind)
Newsgroups svn.migration
Message-ID <[email protected]>
On Jul 25, 2008, at 7:18 PM, Lars Strojny wrote:
> 1.) Do we want to use mod_dav_svn or svnserve, the subversion daemon?
>
> Pro:
>   * Allows to browse the repository with a normal webserver, very  
> handy
>   * Allows to use mod_authz_svn for fine grained access (different
>     format from the current format, but easily to read)
>   * Is writable with normal WebDAV clients which might be a handy
>     feature for those, who do not want to bother with learning SVN
>     (those who do documentation translations, website updates, etc.)
>
> Contra:
>   * Might be slower
>   * Forces us to use Apache 2, which we, as I heard, currently do not
>     use

I've always personally preferred svnserve. It has Authz support these  
days and I think PHP's Apache servers have enough to deal with as it is.

> 2.) Single repository, multiple repositories. Do we want to use a  
> single
> repository for all things PHP, including PEAR, PECL etc.?
>
> Pro:
>   * It is how it is currently
>   * Only one repository to maintain and administer (e.g. hooks are
>     configured for everything or for nothing)
>
> Contra:
>   * Multiple repositories might be easier to scale, as they can be
>     distributed on various hosts. Not sure if this is likely to become
>     an issue
>   * Easier to include new projects and to move current projects to
>     another hosts if the situation requires such a change
>   * One repository itself does not become that huge and can be shared
>     over partitions, discs (while this is possible with symlinking old
>     revision data too, it is not very handy)

I much prefer splitting the top-level projects (pear, pecl, php-src,  
php-doc, everything else) into separate repositories. It both eases  
the conversion and allows for future expansion. I think it will  
simplify rather than complexify the hooks, and we can maintain the  
hooks for most projects in a kind of "meta" repository. CVS already  
effectively functions this way; SVN is geared a bit more towards  
having multiple repositories. It would also help with keeping SVN  
revision numbers from scaling into the hundreds of thousands within  
days.

> 3.) Directory structure: We will have the classical layout
> (branches/tags/trunk), but what about subdirectories in tags like
> releases, and feature tags. What about a developer folder in  
> branches to
> allow developer specific branches?

I'd like to see some "outside the box" thinking here. SVN gives us the  
flexibility to use any structure we want. I wouldn't be averse to  
seeing php-src, for one example, look like this:
php-src/
  PHP_6/
  PHP_5_3/
  PHP_4/
  release_tags/
  old_branches/
  developer_branches/
  other_tags/
  other_branches/

There's not even a trunk/ or HEAD/ in there, one might notice. Why  
should there be? svn's history-preserving copy and move commands also  
make management of such branches deceptively simple.

> 4.) Do we want to sync to CVS in the first time with a hook to allow  
> use
> to switch back just in case of an unforeseeable failure with the
> Subversion repository?

With a redesign of the directory structure as suggested above, this  
becomes difficult at best, requiring a manual mapping of SVN  
directories to CVS branches. But it could and probably should be done  
for at least a month's time post-conversion. We have the people to  
make it work.

> Research
> ========
>     2. What would be the alternative to mod_authz_svn if we decide to
>        use svnserve?

svnserve now has native authz database support.

>     3. How can we improve the speed of the conversion process to make
>        the outage of the tree as short as possible. Does Gwynne need
>        hardware help here, can we provide resources (machines) to  
> help?

Definitely. This is a 2008 iMac running Mac OS X 10.5.4, 2.4 Ghz Intel  
Core 2 Duo, 2 GB RAM. It's fine for my personal purposes, but a  
project like this strains my CPU something awful.

>     4. What scripts to work with CVS are there, how can they be
>        converted to work with Subversion?

Off the top of my head, anything in CVSROOT, the cvsclean script in  
php-src.

-- Gwynne, Daughter of the Code
"This whole world is an asylum for the incurable."
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.