Posts filed under ‘subversion’
This article describes how to integrate Subversion source control with MonoDevelop. Subversion has several methods of accessing a repository. In this example, we will be using accessing the repository directly through the local file system. This means the repository sits on the local machine you are working on.
The following software must be installed.
Creating a Subversion Repository
First we need to create a repository where we will store our source code. There appears to be no way to create the repository within MonoDevelop, so you will need to run this from the command line (replace <myhomedirectory> with your home directory.
svnadmin create <myhomedirectory>/subversion
This creates a repository “subversion” in your home directory (note: the default file system is FSFS).
Adding the solution to the repository
Once the repository is created, We can add the solution to the repository.
- Launch MonoDevelop.
- Open the solution.
- In the solution View, right-click on the solution and select Version Control->Publish. This brings up the select repository dialog box.
- Click on the “Registered Repositories” tab.
- Click on the add button.
- Enter the name of the Repository such as “subversion”.
- Set the protocol to “File”.
- Set the URL to file:///<myhomedirectory>/subversion.
- Press OK. This closes the Add repository.
- Select the repository and press OK. You will be asked if you want to publish the project into the repository.
- Answer Yes.
The solution is now added to the repository.
Using the source control
Now that the solutions has been added to the repository, all of the source files are now under source control. Right-click on any of the file and select Version Control. You can now update, diff, or revert file changes.
Recently, I installed Ubuntu on a laptop with Windows XP. I left a Fat32 volume to share documents between Linux and Windows (since it’s still risky to write to NTFS). I later install subversion on both Windows and Linux Partition and though I could subversion as a document versioning system.
At around version 1.1, Subversion introduced a new file system call FSFS. Previous version of Subversion only supported Berkley DB, which only did not work properly cross platform (you get data corruptions). FSFS is a flat file system that do not have this problem and has been the default file system since version 1.2.
Unfortunately, when I attempt to check in a file to a repository on the FAT32 partiton, I got the following error:
Can’t chmod /myrepository
This was puzzling since chmod essentially does nothing on a Fat32 volume. The error message is deceptive. It appears that chmod is attempting to change permission on Fat32, which doesn’t support it and fails. In reality, the cause of the problem is because the Fat32 volume is typically mounted as root. Since the user is not the owner volume, chmod fails.
You have two solutions:
1. Mount the volume as being owned by you. For example, in the fstab, you can add:
/dev/hda3 /media/hda3 vfat defaults,utf8,umask=007,gid=52,uid=1002 0 1
uid=1002 is my userId. To find out your uid, use the id command. This may not be such a good idea on mult-user machines, but dual boot machines tend to be used primary by one person.
2. Run the svn command using sudo or run as root. Since you are root, you have chmod permission over root owned volumes.
Of course, there are probably more elegant solutions, but this is what I could think of off the top of my head.