One of the benefits of svn is that we can do cross-branch commit pretty
easily now and thus avoid multiple similar commits with annoying MFH/MFB
commit log messages that are hard to track.

Please don't attempt to check out all of php/php-src or pecl.  I made
the mistake of checking out all of pecl and it was 3.4G because you get
copies of the code for every tag and branch and we have a bunch.

In order to do this better, I think the best way is to use the sparse
directory feature documented here:

http://svnbook.red-bean.com/en/1.5/svn.advanced.sparsedirs.html

It takes a bit of work to set up your checkout, but once you have done
it, it becomes easy to work with.  Here are my steps to creating a
~/src/ directory with the parts of the repository I commit to:

# Create initial top-level src dir
svn co http://svn.php.net/repository --depth empty src

# Fetch the parts of the repository I care about
svn co http://svn.php.net/repository/php
http://svn.php.net/repository/pecl http://svn.php.net/repository/pear
http://svn.php.net/repository/phpdoc
http://svn.php.net/repository/systems http://svn.php.net/repository/web
--depth immediates src

# Now, in php-src get all tags and branch names, but only
# populate trunk and the PHP_5_2 and PHP_5_3 branches
cd ~/src/php/php-src
svn up branches tags --set-depth immediates
svn up trunk branches/PHP_5_2 branches/PHP_5_3 --set-depth infinity

# In pecl get all tags and branch names,
# but only checkout out trunk for each
cd ~/src/pecl
svn update * --set-depth immediates
svn update */tags */branches --set-depth immediates
svn update */trunk --set-depth infinity

# Same idea for pear
cd ~/src/pear
svn update * --set-depth immediates
svn update */tags */branches --set-depth immediates
svn update */trunk --set-depth infinity
cd ~/src/pear/packages
svn update * --set-depth immediates
svn update */tags */branches --set-depth immediates
svn update */trunk --set-depth infinity

# and pick up the remaining flat modules (systems, web)
cd ~/src
svn update */tags */branches --set-depth immediates
svn update */trunk --set-depth infinity

Once you have all this set up, you can then cd into any empty branch or
tag directory and run:

svn update --set-depth infinity

to fully populate that directory on demand.

and you can make changes across trunk and multiple branches and perhaps
even make the corresponding fixes in the phpdoc tree!

-Rasmus

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to