__The EIS Subversion Repository__

EIS software is now available through a Subversion repository.  Historically, EIS software has been distributed through Solarsoft (SSW).  The EIS repository provides an additional channel to access the software.  In addition, developers of most EIS software modules must now update their files through subversion.

__What is Subversion?__

Subversion is a free/open-source version control system sponsored  by CollabNet Inc.   That is, Subversion manages files and directories, and the changes made to them, over time.   This allows you to recover older versions of your files or examine the history of how your data has changed.  Subversion makes easy for multiple authors to collaborate on a project by providing a robust set of tools for conflict resolution.

Subversion is very well documented.  The complete Subversion book is available online at:  http://svnbook.red-bean.com/
 
In particular, the chapter on the basic work cycle has lot of good information and will quickly get a novice user up and running.

It is located at: 

http://svnbook.red-bean.com/nightly/en/svn.tour.cycle.html/

__About the EIS Software Repository__

The EIS repository is served from hyperion  ( http://hyperion.nascom.nasa.gov/ ) located at GSFC.

 It can be accessed at https://hyperion.nascom.nasa.gov/svn/eis/

Due to NASA regulations and difficulties in accessing the repository from RAL, the repository is only available using SSL.  Unfortunately, the server uses a self-signed certificate.  This means that when you try to access the repository, you may be bombarded with dire warning messages because the certificate is not in your computer’s certificate chain.  Just ignore these warnings.  You may be able to add the certificate to your store and thus avoid future warning messages.  Or you may not.  This seems to work better on Linux then on Windows.

Although anyone my download the current version (or any previous version) of the repository, you must have a developer account in order to upload content to the repository.

In order to get developer access, please send your preferred username and password to yurow@grace.nascom.nasa.gov .  No restrictions currently exist on account names or passwords.

The repository is organized into a dev branch and a release branch.  Files placed in the release branch will copied to Solarsoft (SSW) on a regular basis.

The dev branch exists as a place for developers to test their software (and make it available for others to try out as well) before releasing it as a finished product.  Files placed in the dev branch will NOT be pushed to solarsoft.  Before placing files in the dev branch, it is best create subdirectory with your account name in order to keep your files in same place and separate from other developers.  For example, developer John Doe might create dev/doe and then place files he wishes to work with under the doe subdirectory.

__Accessing the Repository from the Web__

The EIS Subversion repository can be accessed with only your web browser.   Go to https://hyperion.nascom.nasa.gov/svn/eis/ to view the current revision of the repository.  Clicking on a file will download it to your local machine.

Unfortunately, previous revisions of the repository cannot be accessed by this method.

__Accessing the Repository from a Subversion Client__

More complex operations, including uploading files and accessing previous revisions of the repository, will require you to use a subversion client.

A command line client is available for just about every system in existence.  However, many users will want to use a graphical client.   For windows users, TortoiseSVN is highly recommended.  Pleas see http://tortoisesvn.tigris.org/.

Please note: repository is currently on version 1.6.x of Subversion.  Clients designed to work with earlier versions of Subversion can be used, however not all features may be available.

As a quick reference, here are some basic subversion commands.

__CHECK OUT__

{{svn checkout https://hyperion.nascom.nasa.gov/svn/eis/release <localdir>}}

This command checks out a repository.  Everything from the last directory in the URL on down is copied into <localdir> (which is, of course, a local directory).

In the case of the EIS repository, there are currently two branches: a release branch (which is what this command gets) and a dev branch.  It is expected that, eventually, the dev branch will be used for developers to test out changes to the software prior to moving them to the release branch. This is not happening yet, so just make all your changes to the release branch.

__ADD__

{{''svn add <file1>''     Add a file (<file1>)}}

{{''svn add <dir1>''      Add a directory (<dir1>) and all subdirectories}}

{{''svn add -force *''    Add all files not currently under version control.}}

Add files or directories to the repository.  This places the specified files and/or directories under version control.  New items will be added to the repository the next time you do a commit.

__DELETE__

{{''svn delete <path>/<file1>''  Delete a file (<file1>)}}

{{''svn delete <dir1>''          Delete a directory (<dir1>)}}

Delete files or directories from the repository.  Files (and directories) that have not previously been committed are deleted immediately.  Other items are deleted the next time you do a commit.

__REVERT__

{{''svn revert <path>/<file1>''}}

Remove all modifications from file1 and revert it to the version stored on hyperion.

__STATUS__

{{''svn status''}}

Show the status of each item in your local repository.  Modified files are marked with an 'M'.  Useful for determining which items will be updated once you do a commit.

__UPDATE__

{{''svn update''}}

Update your local copy of the repository to the latest version on hyperion.  Even if you don’t make any changes to the repository, other people may make their own modifications. Update gets these changes and updates your local repository to the latest revision level.  

But what if someone else has modified a file that I was working on?  No problem.  Subversion will seamlessly attempt to merge the two files.  If that proves impossible then it will give you a number of options for resolving the conflict, including disregarding any changes coming from hyperion.

__COMMIT__

{{''svn commit -m "<Message>" --username <user>''}}

Update the repository with locally changed files.  Any files that you have modified (or added/deleted/moved, etc.) are now copied back to the repository on hyperion.  Enter your username for the --username option.  Once you hit return key you will be prompted for a password.  Note that the -m option is mandatory.  You must type in a brief message describing the changes you have made.