SVN
Subversion (SVN) is the version control system used on most of the Mozilla websites. The Mozilla repository is available at svn.mozilla.org. There is also an alternative view which provides RSS feeds and other information at viewvc.svn.mozilla.org.
Contents
Repository Structure
The repository is laid out, generally, as follows:
$project/trunk $project/branches/... $project/tags/...
where
- $project is the project name (defined later)
- trunk is the "root branch"/trunk
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
SVN account for general access
File an IT ticket with your username on the SVN server and which project you’re working on.
Follow the procedure to gain access to commit.
How to connect
Mac
- Install Mac OSX Developer Tools (XCode)
- use svn from the command line using command line arguments
- if you want to use ssh, make sure your ssh key is installed in ~/.ssh
Instructions coming soon for non-Developers. Mac OS Developer Tools comes with subversion, but a self-service system with instructions for Non-Developers is in the works.
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 -> SSH -> 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/
(I think this needs to be:
svn+ssh://nameofyourputtysession/projects/<your project>
--Johnjbarton 12:03, 14 July 2008 (PDT))
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.
- You could simply use your LDAP username/password to checkin/checkout to svn over https. If you'd rather use ssh, then the following entries in your ~/.ssh/config file will make life easy. Replace blah@domain.com with your e-mail address.
~ $cat ~/.ssh/config Host svn.mozilla.org User blah@domain.com ~ $
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 its repositories on URLs, so to check out code, you’ll need a URL. For example, to checkout the code for mozilla.com or mozilla.org anonymously you could type:
svn co http://svn.mozilla.org/projects/mozilla.com/trunk/ mozilla.com/
svn co http://svn.mozilla.org/projects/mozilla.org/trunk/ mozilla.org/
or if you have an account with an SSH key:
svn co svn+ssh://yourusername(see note below)@svn.mozilla.org/projects/mozilla.com/trunk/ mozilla.com/
svn co svn+ssh://yourusername(see note below)@svn.mozilla.org/projects/mozilla.org/trunk/ mozilla.org/
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.
or if you want to use https:
svn co https://svn.mozilla.org/projects/mozilla.com/trunk/ mozilla.com/
svn co https://svn.mozilla.org/projects/mozilla.org/trunk/ mozilla.org/
You'll be prompted for your username and password.
commit (ci)
Usage: svn commit [file [file...]]
By checking out over ssh, you’ll be able to commit your changes.
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"
diff
Usage: svn diff [file [file...]] > patch
If you do not have an account, you can still make a patch to submit in a bug.
This command takes a list of files or directories. An example:
svn diff . > wholedir.patch
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
As of April 2007, webdav is available over https.
How to browse the repositories through the Web
Viewvc can be quite useful for browsing sources and seeing changes.
See also
- Mercurial, Mozilla's version control system for the source code of most of its software products.
- Template:SVN to create a link to a version in Subversion