IVLE's file browser features an integrated Subversion client. Students are encouraged to place all of their files under revision control with Subversion. This provides the following functionality:

Subversion in IVLE

IVLE automatically creates Subversion repositories and workspaces, so Subversion "just works" from the start. All of the default directories you see in IVLE are Subversion workspaces by default.

The home directory in IVLE is not a Subversion directory. Any files you create in this directory cannot be committed or reverted, so we recommend you don't put any files here (if you do create files here, they will appear under the heading "Junk").

IVLE creates a Subversion workspace for each of the following:

The workspaces are not checked out by default. Therefore, when you first log into IVLE, you should see all of the aforementioned workspaces with "(missing)" and a "Checkout" button. Press each of the Checkout buttons to create the workspaces.

Subversion status icons

IVLE shows the status of each file as an icon to the left. This shows the status of each file in the working directory with respect to its backed up state in the repository.

The statuses are:

Subversion commands

Within each of the workspaces (and their subdirectories, if versioned), the Subversion commands will be available. These are available under the "More actions" drop-down under the "Subversion" heading. Some are available on the current directory, if no files are selected. Others are available on the currently selected files.

This section offers only a brief guide to the Subversion commands. For a complete guide to Subversion, see Version Control with Subversion. This section is specific to the Subversion integration within IVLE.

Note that none of the commands have any effect on the repository until the Commit action is applied.

The commands are:

Projects and group work

You are required to place all of your projects under Subversion in order to submit them. See Submitting a project for help on submissions.

On group projects, it is a little bit trickier, as you don't have any shared directories — only a shared repository. In general, programmers find it very difficult to work with others if you are sharing a directory, constantly writing over each others files! So instead, you each get your own directory, and share files by committing (that sends changes out to the team) and updating (that receives changes from the team).

As stated above, each project group you are in gets one shared repository, which you can check out from your home screen. Note that if you do several projects with the same group, you will continue using the same repository throughout the subject.

Firstly, you should all agree on a Subversion process, and spend some time practicing committing and updating while you are all in the same room. Your workflow should go something like this:

  1. Whenever you start work, run the Update command, ensuring that your workspace includes all of the latest changes made by team members. (You may even wish to View Log after updating, to see what your team members have been up to.)
  2. Make your changes . You should make only small changes at a time, and then make sure your programs and documents are still valid. Be sure to add any new files you create. Random files which aren't part of your project and don't need to be saved, such as ".pyc" files, should not be added.
  3. Run Update again, to make sure nobody has committed anything in the meantime. If they have, it will merge those changes into your changes, so you end up with the absolute latest version. In very rare cases, you may see the dreaded "conflicted" status on some files, meaning that both you and a team mate changed the same part of the same file, and you will have to manually resolve it. See above for advice on this issue.
  4. View the Diff. This gives you a good overview of the changes you have made, so that a) you know you haven't accidentally changed something you didn't mean to, and b) you have a good idea of what to write in the log message.
  5. Run Commit. Enter a log message which summarises the changes, so your team mates can quickly find out what you've changed. If all goes well, the files you are committing will go back to permanent files, so you know that the repository is synchronised with your changes.
  6. Repeat steps 2-5.

With a bit of practice, the whole update-diff-commit process can take less than one minute. It's important to commit often, and commit small changes with useful commit logs, so your team mates can follow the changes you are making.