IMPORTANT: A third migration has been done, the causes are documented in here. People will need to re-checkout their trees.
The Tree is Open
IMPORTANT: The SVN path has changed, now instead of `/repo/' or `/src/' we now use `/source/'.
NEED: People with bandwidth that would like to host Anonymous Subversion servers for distributing the sources. Contact email@example.com for details.
SVN 1.0 and 1.1 clients are compatible with our SVN server.
SVN clients for various distributions are available http://subversion.tigris.org/project_packages.html
To checkout your new tree:
$ svn co svn+ssh://USER@mono-cvs.ximian.com/source/trunk/MOD
Where `USER' is your username on CVS, and `MOD' is the module that you want to checkout.
To update your sources:
$ svn up
To commit your changes:
$ svn commit
If the commit has conflicts, after you fix the conflicts in the file, you must tell svn that the conflict has been resolved:
$ svn resolved file.issue
To diff your local changes:
$ svn diff
Note, by default svn gives a unified diff.
To diff your local changes, ignoring white space:
$ svn diff --diff-cmd /usr/bin/diff -x "-w -u"
To check-out a specific branch:
$ svn co svn+ssh://USER@mono-cvs.ximian.com/source/branches/BRANCH/MOD
Where `USER' is your repository username and `BRANCH is the branch name that you want to check out, and `MOD' is the module name that you want to check out.
To annotate a file:
$ svn blame filename
There are other aliases for that action, `annotate' and `ann' also work.
To view the check-in logs for a file:
$ svn log filename
List branches available:
$ svn ls svn+ssh://USER@mono-cvs.ximian.com/source/branches/
If you have pending patches on your tree, you will need to produce a diff:
$ cd cvs/MODULE $ cvs diff -u > /tmp/patch
Then on your new checkout of SVN, apply the patch:
$ cd svn/MODULE $ patch < /tmp/patch
And commit the changes:
$ svn commit -m "Message"
Peter has setup an anonymous SVN server, to download your modules, use the svn://mono.myrealbox.com/source prefix.
For example to download the mono and mcs modules:
$ svn co svn://mono.myrealbox.com/source/trunk/mono $ svn co svn://mono.myrealbox.com/source/trunk/mcs
To download all the modules in the mono-1-0 branch:
$ svn co svn://mono.myrealbox.com/source/branches/mono-1-0/
The Subversion Book.
Top Ten Tips for CVS users
Another Subversion article
In case of doubt, there is a Subversion crowd in channel #svn in irc.freenode.org
The default settings for the cvs2svn script set a special flag that controls line endings on each textual file on the repository. This feature is intended to allow developers on multiple opereating systems to edit those files freely.
Unfortunatelly the Mono project had a mix of line-endings on its source code due to the nature of the project: LF and CRLF depending on the sources, and it would not even be consistent at the time. This was something that we failed to catch on early on in our use of CVS.
The problem is that the End-of-Line (EOL) mapping in Subversion effectively meant that one-line changes in one of the problematic files would basically commit the entire file to the repository with the new changes. This had two problems:
The subversion people have been great supporting us, and there is a script being developed that will help us fix all this in the future and is being tested as we speak.
Today we have reimported the tree a third time, this time without the special EOL attribute for Subversion, so Subversion will not change the files magically. But this means that we are not taking full advatange of Subversion. Hopefully in the future (when we test the script on various offline repositories) we will be able to take care of this problem once and for all (without requiring a full re-checkout again).
Saving current svnadmin-1.0.6-1.static as svnadmin-1.0.6-1. Erase this program only after you make sure you won't need to dump/reload any of your repositories to upgrade to a new version of the database.