Sublime’s powerful Repository Template feature allows you to create templates that users can select when creating new repositories. These templates can include folder structures and files that should be created for each new repository. Creating a basic template is as easy as creating the folders and files, and then editing a few lines in a text file. However, one of the more powerful features of Sublime is to create templates customized to each new repository. This, can take a bit more work.
A customized template is one where repository details (name, description or owner) are used when the new repository is populated from the template. Typically this is used to simply rename files or folders to match the name of the new repository. But what if you wanted to go farther? In this post I’ll show you how to create a template containing full Visual Studio solution including multiple projects, all of which will be customized to each new repository.
Start up Visual Studio and create a solution to be used as your template. You can create multiple projects, default classes, etc.
Next, close Visual Studio and navigate to the folder containing your solution. Rename your files and folders using the placeholders below so that they will be renamed when your new repository is created.
Be sure to remove any unwanted files and folders such as bin, obj, or .suo and .user files.
The next step is a bit tricky. Open your Solution File (.sln) in a text editor such as Notepad. Locate the project names and again, use the placeholders above to rename the names and paths.
Next you must replace the solution GUID and project GUIDs with placeholders so that new GUIDs will be generated for each new repository. Start with the solution GUID used for each project and replace it with %guid[0]% (leave the GUID braces).
Next you must replace the GUIDs for each project. Assign numbers to each project starting with 1 and keep a note of which project has been assigned what number. In my case I chose to use alphabetical order. Now, select the GUID for the first project, and using Find and Replace, replace it with %guid[1]% (again, leaving the braces). Do the same for each project, each time using a new guid.
Save and close the modified solution file.
Next, open each project file (.csproj, .vbproj, etc) in a text editor such as Notepad.
First, replace the GUID in the <ProjectGuid> tag with the guid that you assigned in the last step (i.e. %guid[1]%). If you set up project dependencies when you created your solution, you may need to update those as well.
Next, update the <AssemblyName> and <RootNamespace> tags to use the placeholder names for your new repository.
Next you may need to modify your source code files to replace namespaces with placeholders. For example, in this example we replaced the namespaces within the Global.asax and Global.asax.cs files.
Next build out the rest of your repository template structure. Remember that the files and folders you create will populate the entire repository, so you must create the “tags”, “branches” and “trunk” folders as well.
Finally, copy the entire template structure to the Templates folder on your Sublime server (typically C:\Program Files\Sublime\Templates).
Then open the “templates.txt” file and add the details for your new repository template. See the administrator guide for details on modifying the “templates.txt” file. Be sure to include the “replaceTokens = true” line for this new template. Otherwise the placeholders you created will not be replaced with actual values.
Save “templates.txt” and perform an IISRESET.
Finally, create a new repository using the new template to ensure it is working properly. It is a good idea to create a repository, check it out, and open the solution in Visual Studio to ensure that the project builds and that all names are being replaced properly. If you missed any files or namespaces you can simply edit the template on the server and try again.
You can download the sample repository template created for this walkthrough from the link below.
Many organizations use SharePoint for team and project collaboration. SharePoint is an ideal location to store project documents, issues lists, and other project artifacts. However, without a view into the actual development progress for your project you won’t have a complete picture. With Sublime 1.2 it is very easy to view your repository commit history directly within your SharePoint team sites or even your My Site.
Having a SharePoint site per project is a very common model for organizations who rely on SharePoint for collaboration. With Sublime’s RSS feeds it is possible to display the commit history for a single repository right within your SharePoint project sites.
One of the best features in Sublime 1.2 is the personalized activity stream. This activity stream shows you all activity on any repository you are a member of so you can easily stay up to date with all your projects. And because this view is personalized it is an ideal candidate for your SharePoint My Site.

Depending on how you have configured your Sublime security settings, you may need to modify the RSS Feed URLs slightly.
http://myserver/Feed.aspx?f=repo&r=/path&username=myusername&password=myurlencodedpassword
Sublime will automatically send email notifications to your developers after a commit is made. You can enable email notifications for your repositories by navigating to the Repository in Sublime, clicking the Edit Settings link, and changing the Email Notification setting to “On”.
By default, each email notification looks like this:

Default subversion email notification
However, this can be customized by editing an HTML template file located on your Sublime subversion server.
Here’s an example of a customized email template. We have added our company logo at the top, and excluded some of the commit details.

Customized email notification
The table below contains the complete list of placeholder tokens which may be used in your email notification template. The example for each is taken from the screen shot below the table so you can see exactly where the token is used in the email notification.
| Token | Description | Example |
|---|---|---|
| {REPOS} | Repository Name | Synergy |
| {REPOS_URL} | Repository URL | svn://svn.mycompany.com/Products/Synergy |
| {AUTHOR} | Username of the committer | jimm |
| {AUTHOR-EMAIL} | Email address of the committer | jimm@mycompany.com (not shown, used for author link) |
| {DATE} | Date and time of the commit | 9/25/2009 10:42:39 AM |
| {REV} | Revision number of the commit | 10 |
| {COMMENTS} | Free-form comments entered by the committer | “Began implementing order repository methods” |
| {CHANGES} | Full list of changed, added, or deleted files/folders | M /trunk/src/Synerg.Data… |

Default subversion email notification
Sublime automatically backs up all of your Subversion repositories on a schedule you define. In this short article we will walk through the process of configuring your backups, monitoring your server to ensure backups are happening, and restoring a repository.
To configure your backups, navigate to the Administration section in Sublime and click the “Backups” tab. First, enter a path for your repositories to be backed up to. When you install Sublime, it will default this path to be a Backup folder within your Sublime installation directory. However, it is strongly recommended that you back your repositories up to a network device such as a NAS or remote network share.
Next, enter a time of day and the days of the week that your backups should occur. Generally this should be a time of the day that users are not using Subversion. However, Sublime uses the subversion “hotcopy” command when making backups so even if your users are still accessing Subversion you are not at risk of corrupting data or interrupting the backups.
Lastly, enter a backup account to be used when performing the backups. This account must have read/write access to the Backup path. It will also be added to the local administrators group on your subversion server.

Scheduling subversion backups in Sublime
Each time Sublime backs up your Subversion repositories, it will write an entry to the Windows Event Log. You can monitor this directly from the Sublime web interface, or by connecting to the server using remote desktop. Each entry in the windows event log will list the number of repositories backed up, the number of errors (if any), and the duration for the backup.

Successful Subversion backup in the Windows Event Log
If you are using Windows Server 2008, you can create a Custom View to show only Subversion backup messages. Simply create a new Custom View to display “Information” events filtered where the Source is “Sublime.SubMaint”.
Restoring a repository is essentially copying the backup repository from the backup location back to your Subversion server. However, as a best practice we recommend the following steps:
Let’s look at an example. In the screen shot below, the left folder is the Repositories folder on our Subversion server. This contains all of our current “live” repositories. The folder on the right is our backup location. If we wanted to restore the “CommonLibs” repository, first we would delete “CommonLibs” from the “Archive” folder on the left. Then we would copy the “CommonLibs” folder from the backup location on the right and paste it in the “Archive” folder on the left. The result would be a fully restored version of the “CommonLibs” repository from the time the last backup ran.

The Backup location is a mirror of your Repository location
Once you have restored your repository you can bring the Subversion service back online. It is also a good idea to reset IIS (open a command prompt and type “iisreset”) to ensure that the Sublime cache is cleared.
If you are new to Subversion it may not be clear exactly what constitutes a repository. In short, a repository consists of a folder containing a number of specific sub-folders and files. So when we say “repository” we are talking about the parent folder and all child folders and files.
You can identify the repository parent folder by looking at its children. A repository will contain the following child folders: conf, db, hooks, locks. It will also contain a file called “format” and there may or may not be a README.txt. In the following screen shot, we are looking at the content of “CommonLib” You can see that it contains these folders, thus “CommonLib” is a repository. The parent folder “Archive” is not – it’s merely a folder.

Identifying a repository folder
Repository Templates are a great way to reduce the time required for setting up a new project, and encourage consistency across projects. Consistency is important especially in an organization with many different repositories spread over different projects and development teams. Having a consistent repository structure drastically reduces common errors made by new developers or even experienced developers in an unfamiliar repository.
Setting up Repository Templates in Sublime is as easy as creating a folder structure on your Sublime server containing the files and folders you want to include in your new project. In this walk-through we’re going to create a Repository Template for new projects using . Sharp Architecture is a perfect candidate for a Repository Template because there are quite a few dependencies that can take a while to download and organize.
In the following steps we’ll be creating a Repository Template for Sharp Architecture, but the same steps can be applied to any number of project types you may have.
The first step is to create the new Repository Template folder on your Sublime/Subversion server.

Create a new folder for the template

Create the branches, tags, and trunk folder

Create the project folder structure
Now that our basic structure has been created, it’s time to download the related Sharp Architecture binaries as well as their dependencies.

Copy Sharp Architecture binaries to template
The last step is to register the newly created Repository Template with Sublime.
[SharpArch]
name = Sharp Architecture
description = Use for Sharp Architecture based projects.

Insert new template description into templates.txt
C:\> iisresetOpen a web browser and navigate to Sublime. Click on the Create New Repository tab and in the Template section, you should see the new “Sharp Architecture” template.

Preview the new template
In this walkthrough we’ve created a new Repository template for projects using the Sharp Architecture framework. We created a folder structure and pre-downloaded all binaries and their dependencies so that new repositories would automatically have this structure and these resources. This same approach could be taken for any number of project types relevant to your organization.
Using these same techniques you could make your template more robust including common resources such as:
For additional information and complete documentation on creating Repository Templates, please see the Sublime documentation.