Subversion version control

## Accessing WinMerge Subversion repository

### Why Subversion?

We used SourceForge.net's CVS service for years. It served us pretty well. In 2006 SourceForge made Subversion also available as service. And after short discussion WinMerge developers agreed to switch to Subversion. It fits better to our needs than CVS. So we switched from CVS to Subversion in August 2006.

#### Where are old branches and tags?

They are in CVS. We did not import them to Subversion. If you need (codes of) old stable version you get them from project downloads.

### Web access

Easiest way to browse our source code is through web. SourceForge.net utilizes ViewVC to access Subversion repositories via Web. WinMerge Subversion repository is available at: http://winmerge.svn.sourceforge.net/viewvc/winmerge/.

### Subversion client programs

- TortoiseSVN Recommended TortoiseSVN is a great Subversion client program for Windows. It does not need Subversion to be installed.
- Subversion The Thing. If you want to use commandline or if you want your own local Subversion repository, you need it. Not needed for TortoiseSVN.
- AnkhSVN is a Subversion plugin for Visual Studio (VS2005+).

### Subversion documentation

The Subversion Book is the definite guide to Subversion. Please try to find some time to look at it. There are also many Subversion and SVN resources available in the net. Just listing couple of them here:

- Wikipedia article about Subversion.
- CodeProject articleVersion Control for the Standalone Programmer - Part 1.

### Repository URLs

WinMerge Subversion repository URL is:
`https://winmerge.svn.sourceforge.net/svnroot/winmerge`

Using above URL will checkout all branches and tags. WinMerge development happens in trunk and URL is:
`https://winmerge.svn.sourceforge.net/svnroot/winmerge/trunk`

Branches are in separate folder:
`https://winmerge.svn.sourceforge.net/svnroot/winmerge/branches`

Current branches are:

- 2.6 release branch
  `https://winmerge.svn.sourceforge.net/svnroot/winmerge/branches/R2_6`
- 2.8 release branch
  `https://winmerge.svn.sourceforge.net/svnroot/winmerge/branches/R2_8`
- 2.10 release branch
  `https://winmerge.svn.sourceforge.net/svnroot/winmerge/branches/R2_10`
- 2.12 release branch
  `https://winmerge.svn.sourceforge.net/svnroot/winmerge/branches/R2_12`
- 2.14 release branch
  `https://winmerge.svn.sourceforge.net/svnroot/winmerge/branches/R2_14`

Old branches (2.0 - 2.4 releases) are in CVS repository.

For every beta- and stable-release we add a tag. Tags are in folder:
`https://winmerge.svn.sourceforge.net/svnroot/winmerge/tags`

### Quick intro to using TortoiseSVN

#### Checkout

1. Create top-level folder for your development version (e.g. `c:\devel\WinMerge\`)
2. In Windows explorer, go to that folder, and right-click with mouse in it
3. Select SVN Checkout... -item
4. Give trunk URL (see above) as a repository URL to get out development trunk

SVN should now checkout WinMerge trunk to given folder. Note that there is NO modules in SVN like there is with CVS, so all files in `/trunk` in SVN repository are added to folder you just created. Don't checkout to some common folder expecting there will be WinMerge subfolder anyway!

#### Checkin

1. Update ALL needed files before checking in. With SVN it is just one checkin for one revision, so you can't do like with CVS to checkin one file or directory at a time.
2. Right-click over WinMerge root folder which you created for WinMerge trunk
3. Select SVN Commit from context menu
4. Type message (preferably same than in `changes.txt`) to commit dialog
5. Double-check that all files are in list of files
6. Click OK-button
7. Give your SourceFOrge.net login and password when TortoiseSVN asks them (it remembers them for the next time if you check the checkbox)

Please copy/paste revision number to patch tracker item when you apply a patch to version control. It makes it easier to track changes afterwards. That information is of course available through logs and ViewVC, but it saves some time when revision number is visible in patch item.

#### Update

1. Right-click over WinMerge root folder which you created for WinMerge trunk
2. Select SVN Update from context menu