Subversion

CLASSE supports a central Subversion repository available over HTTPS at https://svn01.classe.cornell.edu . For a new area for your project or group, or to gain access to an existing area, please submit a ServiceRequest.

svn01 uses Subversion 1.6.11 provided from RedHat. To ensure compatibility with the server and other clients that may interact with your repository, it's important that you use a compatible SVN client.

In addition, the Accelerator group maintains their own SVN server named accserv. accserv is configured identically to svn01, and the following documentation is applicable to both repositories. Please see AccSVNRepository for documentation specific to the ACC repository.

Browsing the SVN repository

To access the repository, you can just use https://svn01.classe.cornell.edu/ from any web browser or SVN client. From a non-CLASSE network, you will need to first connect to the CLASSE VPN.

For example, from the command line you would do:
svn ls https://svn01.classe.cornell.edu/

Authentication

To gain access to the repository on svn01 or accserv, you must authenticate using your CLASSE username and password. If you already have a valid CLASSE.CORNELL.EDU kerberos ticket (for example, by logging into a CLASSE system or first typing kinit username@CLASSE.CORNELL.EDU, you will not be prompted to type your password again when interacting with the repository. Please see ClasseAuthentication for more information.

Stored Credentials

If you do not have a kerberos ticket, svn will prompt you for your username and password. By default, the client will then ask if you want to store the password locally unencrypted. While the stored password would be only readable by your account, this is not recommended. It is far better to use kerberized authentication as discussed above. In order to prevent the SVN client from storing your password unencrypted, edit ~/.subversion/configand set

store-passwords = no

If you would like to delete any stored passwords or find you are unable to access a repository, you can delete any stored credentials using: rm -rf ~/.subversion/auth/svn.ssl.server/*

SSL Certificates

Both svn01 and accserv use signed SSL certificates provided by Cornell. If for some reason your client is not recognizing the SSL certificate, you can add --non-interactive --trust-server-cert to your svn command.

Tortoise SVN

Under construction. For assistance using Tortoise SVN from Windows, please submit a ServiceRequest.

Documentation

The official SVN book is available online at http://svnbook.red-bean.com/

The official SVN website is located at http://subversion.apache.org/

SVN Client

You will need to use a Subversion client for pulling and pushing files from/to the Repository. On CLASSE Linux systems several client choices are available:

Read/Write Access from the CLASSE Linux computer system

  • Read/Write access is handled by an access control mechanism based on Kerberos credentials supported by a CLASSE user account.
  • help Note: The password for this authentication method is the same one used for your CLASSE account. To obtain fresh Kerberos credentials in the event the repository denies you access (as these credentials are set to expire after a modest period of time) run the command kinit -f [username] . This will prompt for your Linux login password. See our wikis for more information on the CLASSE account password or generating a CLASSE kerberos ticket.

Directory Tree Checkout

To create a local working copy of a directory tree from the Repository, first make a directory for your local copy. Henceforth this directory will be referred to as DIR. A possible name might be: root_dir. Substitute the appropriate directory name for DIR in the below steps.

The URL used in your checkout will be https://svn01.classe.cornell.edu/REPOS_PATH To find the correct REPOS_PATH, use the Repository web viewer.

Using the Command Line

  1. To make a local copy of a repository source directory, the commands are:
    • cd DIR
    • svn co https://svn01.classe.cornell.edu/REPOS_PATH

Using Tortoise SVN

Updating a Local Copy

Using the Command Line

  • To update your local copy of a library and/or executable so that it has all the revisions that have been introduced into the repository, go to the directory containing the library and/or executable and use the command:
    • svn update

Using Tortoise SVN

  • right-click on your local checked-out copy, and select "SVN Update" to make sure you have the latest version of the repository.

Committing changes to the repository

Using the Command Line

  • Browse to the directory containing your copy of the repository, and execute:
    • svn commit -m "message describing the changes being committed"

Using Tortoise SVN

  • right-click on your local checked-out copy, and select "SVN Commit"

Reintegrating Branches into Trunk

As of SVN 1.8 the --reintegrate option of svn merge is now deprecated and its use is discouraged. This is because SVN 1.8 introduced a very nice automatic reintegration merge feature that will determine whether or not the merge is reintegrating a branch.

To reintegrate a branch, have a clean working copy of trunk and run the following command in its top-level directory:

$ svn merge ^/branches/my-branch

Also note that SVN 1.7 has reached it's end of life and is no longer supported by Apache. The information on reintegration below is being kept for historical purposes, should someone still be using SVN 1.7 or below.

Instructions for Deprecated Reintegration in SVN 1.7 and Below

If you choose to create an svn structure that has a trunk and branches, you'll want to know about the svn merge --reintegrate command.

Essentially, it works like this. Keep your branch up to date by merging trunk to it with svn merge. When you are ready to merge your branch back into trunk, checkout trunk locally and merge your branch into it with svn merge --reintegrate . Then commit these changes to trunk.

Once you use --reintegrate, the branch is no longer maintainable, and it can actually be deleted as svn will maintain revision history of the branch.

For further details, see the Basic Merging section in Chapter 4. Branching and Merging in Version Control with Subversion.

If you are using SVN 1.8 or above, you should no longer use the --reintegrate option. SVN 1.8 introduced an automatic reintegration merge feature.

A Revision Control Primer

Below is a brief primer on the commands needed to perform basic repository operations Each command must be provided with the location of the specific repository with which you would like to interact.

The general workflow from Windows is the same, but you use Explorer (right-click on folders or files) instead of using the command line.

For SVN, the repository to use is simply part of the file or directory path for the target you wish to operate upon and will always take the form of a URL.
  • http://hostname_of_repository_server/site-specific_suffix/trunk,_branch,_or_tag/path_to_file(s)
  • If you are working in a checked-out directory, all SVN commands will automatically use the repository information that was obtained during checkout.

Some of the most commonly used commands: [ A dot_urdenotes an optional argument. ]
Operation CommandSorted ascending Description
 
Check out   A necessary preliminary for most cvs work: creates your private copy of the source for modules (named collections of source; you can also use a path relative to the source repository here). You can work with this copy without interfering with others' work. At least one sub-directory level is always created.
 
Commit / check-in   Use this command when you wish to "publish'' your changes to other developers, by incorporating them into the source repository. If no filenames are provided, it will check-in all files in the current directory and its subdirectories that have changed since they were last checked out or updated.
 
 
 
Remove files   Use this command to declare that you wish to eliminate files from the repository. The removal does not affect the repository until you run a "commit" command.
 
Create directory   Create a new directory under version control
Add files svn add Use this command to prepare files for addition to the repository. The files will be enrolled in your working copy immediately, and only added to the repository the next time you run "commit".
Check out svn checkout A necessary preliminary for most cvs work: creates your private copy of the source for modules (named collections of source; you can also use a path relative to the source repository here). You can work with this copy without interfering with others' work. At least one sub-directory level is always created.
Commit / check-in svn ci Use this command when you wish to "publish'' your changes to other developers, by incorporating them into the source repository. If no filenames are provided, it will check-in all files in the current directory and its subdirectories that have changed since they were last checked out or updated.
Check out svn co A necessary preliminary for most cvs work: creates your private copy of the source for modules (named collections of source; you can also use a path relative to the source repository here). You can work with this copy without interfering with others' work. At least one sub-directory level is always created.
Commit / check-in svn commit Use this command when you wish to "publish'' your changes to other developers, by incorporating them into the source repository. If no filenames are provided, it will check-in all files in the current directory and its subdirectories that have changed since they were last checked out or updated.
Remove files svn del Use this command to declare that you wish to eliminate files from the repository. The removal does not affect the repository until you run a "commit" command.
Create directory svn mkdir Create a new directory under version control
Create directory svn mkdir Create a new directory under version control
Remove files svn remove Use this command to declare that you wish to eliminate files from the repository. The removal does not affect the repository until you run a "commit" command.
Update your working copy svn update Execute this command from within your private source directory when you wish to update your copies of source files from changes that other developers have made to the source in the repository.

Reference

Version Control with Subversion is "a free book about the ubiquitous Apache™ Subversion® version control system and written by some of the developers of Subversion itself."

This topic: Computing > SubVersion
Topic revision: 04 Apr 2022, AdminDevinBougie
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding CLASSE Wiki? Send feedback