SVN
Mozilla has a SVN server set up to evaluate it's suitability to use to replace CVS (IIRC).
Repository Structure
The repository is laid out, generally, as follows:
$project/trunk $project/$Branch_Name $project/releases $project/labels $project/projects/$Project_Name $project/people/$User
where
- $project is the project name (defined later)
- trunk is the "root branch"/trunk
- $Branch_Name/ are the (active?) branches (i.e. MOZILLA_1_8_BRANCH, MOZILLA_1_8_0_BRANCH, etc.) These will include both release and development branches.
- releases/ are release tags, i.e. FIREFOX_1_5_0_7_RELEASE; they are not writable.
- labels/ are tags that aren't (necessarily) simple svn cp's; that is, they may have "cherry picked" fixes, and represent uses like the current AUS2_STAGING and AUS2_PRODUCTION tags.
- $project/projects/$Project_Name is an area for "project branches," branches that multiple people are working on/interested in, i.e. the "REFLOW" branch.
- $project/people/$User is an area for "personal branches," areas of development that you're working on and will merge onto either project branches or development branches.
$project will be defined on a case-by-case basis.
Remora/Addons3 is being developed in /addons; Mozilla Labs projects will go in labs/$projectName.
The goal is to not pollute the / namespace with too many individual projects.
How to get an account
File an IT ticket with your username on the CVS server and which project you're working on.
If you don't have a CVS account, you need to get a form filled out and attach your public key to the bug.
How to connect
Windows
Get PuTTY and TortoiseSVN.
- Don't just download the PuTTY exe, use the installer package - it contains Pageant which you need and PuTTYgen which you may need to convert your SSH key.
Fire up Pageant. Right click on the icon in your system tray and click "add key." browse too your private key and select it.
Right click on the icon in your system tray and select "new session."
- Host name = svn.mozilla.org
- Port = 22
- Protocol = SSH
Connection -> Data
- Auto-login username = your email address
Connection -> Data -> Auth
- Browse to your private key for authentication
Go back to session, enter a name for your session (mozillasvn is good) and click save.
Click Open to test the connection. You should get something like:
Using username "yourname@youremail.tld". Authenticating with public key "name-of-your-key" from agent Last login: last login date
If you get that far, things are good, type exit and terminate the connection.
TortoiseSVN -> settings -> Network. Make it an empty box where it asks you to specify the SSH client. I'm not sure why I did this, but it works for me.
SVN checkout from svn+ssh://nameofyourputtysession/addons/
If this doesn't work, hop on IRC and we'll see what we can do for you. If you work out more solutions, please add them to this page.
Linux
Install a package that works for you. If you're on debian or ubuntu `apt-get install subversion` will handle all this for you.
How to Use SVN
Subversion is designed so that a conversion from CVS is as painless as possible. This is a short introduction to some basic commands - please read the "Notes" section below for more useful links.
checkout (co)
Usage: svn co <source> <dest>
SVN bases it's repositories on URLs, so to check out code, you'll need a URL. For example, to checkout the code for mozilla.com anonymously you could type:
svn co http://svn.mozilla.org/projects/mozilla.com/trunk/ mozilla.com/
or if you have an account:
svn co svn+ssh://yourusername@svn.mozilla.org/projects/mozilla.com/trunk/ mozilla.com/
By checking out over ssh, you'll be able to commit your changes.
Your username is usually your email address. In case you experience errors when using more than one '@' sign in the repository URL, make sure you encode the @ sign in the email address as %40.
commit (ci)
Usage: svn commit [file [file...]]
Once your code is checked out, you can commit your changes back to the repository. This command takes an optional list of files or directories to commit, if you only want to commit some changes. An example:
svn commit
If you'd like to add a comment and commit all in one line, you can try this command:
svn commit -m "Commit message here"
status
Usage: svn status [file [file...]]
Regarding commands, this is one of the largest differences from CVS. Instead of having to update your tree to check the status of files, SVN has this command which will list the differences without affecting your files. See the status documentation page for what the letters mean.
svn status
update
Usage: svn update [file [file...]]
This will pull any new changes from the repository and merge them into your local files.
svn update
Notes
This is a really brief overview, and if you'd like further reading, please check out the following:
- The complete free O'reilly book (filled with great examples)
- A short appendix from the book specifically for CVS users
- | Another great reference for CVS users
- ONLamp.com's top tips for CVS users
How to browse the repositories through the Web
Viewvc can be quite useful for browsing sources and seeing changes.