We’re still a ways away from the release of Sublime 1.3 but I thought it would be a good idea to provide a sneak peak into what we have in the works.
Although Sublime currently supports Active Directory authentication with Apache it requires you to install and configure Apache manually. Starting in Sublime 1.3 we will manage the installation and configuration process automatically. No more mucking around in configuration files – Sublime 1.3 will provide the same easy-to-use management interface that we do for the rest of Sublime’s features.
Sublime 1.3 will support hook script management for repositories. Administrators will be able to make certain hook scripts available and even enforce that all repositories use certain scripts. This is useful for enforcing policies or integrating with other systems such as bug trackers. Once these scripts are available repository owners will be able to easily enable or disable them for their repositories.
Sublime 1.3 will also include the following minor updates:
As always, please leave us feedback on our . This is one of the primary methods we use when planning features for Sublime.
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.
Sublime is proud to announce its decision to sponsor the next few episodes of , a podcast featuring stories about technology, technologists, and what it’s like to live and work in this field. Inspired by the storytelling format of , and have created this podcast filled with interesting perspectives, and a compelling behind the scenes look into the more intimate and personal nuances of the developer’s world.
Of course we wish to spark interest in Sublime, and promote it to a relevant and growing audience, but more importantly, we are thrilled to support such a quality independent production. The media landscape is changing, and as consumers we play an integral role in this change. There are more avenues than ever before to find compelling, interesting, and stimulating content, be it independent movies, animated shorts, online comics, blogs, games, music or podcasts. More and more we are not limited to the safe, watered down programming which is chosen by the large corporations for its appeal to the masses. Instead we may be guided by our passions, our interests, our particular (or even peculiar) tastes.
However, if we value this trend and want it to continue, we can’t rely solely on the good will and creative energy of the people behind these productions. When we find products that we enjoy and value we need to show our support. We believe in the product that Rob and Scott are producing, we want to see it continue, and we’re excited to be a small part of that.
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
Let me paint you a picture. It’s 5 minutes till 5 at the end of a long work week and you’ve just wrapped up a new feature on your current project. It’s time to commit those changes and head out for the weekend. You pull up TortoiseSVN, write a helpful and descriptive commit message (feeling vastly superior to your less-than-thorough colleagues with their ), and hit the Commit button.
AHHHH! The last thing you want to do is spend the next hour picking through other people’s changes to make sure your code still works.
Now here’s a little secret about developing software with a team. Merging is just a fact of life. Unless you want to go back to the old model you’re going to have to merge your changes with someone else’s at some point. But with today’s software, most merges can be handled automatically by our development tools. The only real problem arises when you have to merge lots of changes all at once across many different parts of your code-base. Resolving conflicts (deciding what code to keep when two changes contradict each other) requires intimate knowledge of your code and your colleague’s code. Not the activity for 5PM on a Friday!
There are two keys to keeping merges simple:
As you are making changes to your code, keep a mental note when you shift from one focus to another. Are you fixing a bug? Developing a new feature? Optimizing a query? As soon as you shift from one focus to another – assuming you are finished with the first thing – commit those changes along with a short, simple description of your changes. This is good practice in general, but it also greatly reduces confusion when a team member has to merge their changes with yours. A small, focused change is much easier for someone who isn’t familiar with your code to comprehend. So if I have to merge my changes with yours, and I see that your change fixes a certain bug, I can be sure to pay attention to that detail when merging so as not to re-introduce the bug into the code-base.
Staying up to date with the activities of your team is a critical step in reducing and even eliminating the pain associated with merging. If you see that a colleague committed a change to a file you are working on, you can update your working copy right then and there. This offers two significant advantages: (1) you will be dealing with smaller conflicts that are usually much simpler and (2) the other developer is probably still in the office if you have any questions.
This is where Sublime enters the picture. Sublime allows you to stay up to date with your development team using email notifications and RSS feeds. If you enable email notifications on your project repositories you will be notified immediately when another users commits changes. If you don’t like email, you can use the personalized activity stream RSS feed which notifies you whenever a user commits changes to any of your repositories. Both of these methods allow you to quickly scan the commit details including the commit message, and changed files so you can determine if their changes might conflict with your work.
The amazing thing about these two practices is that (a) they are actually pretty simple to implement and (b) the time and mental energy required for merging changes practically vanishes. And it’s not just that you are spreading that hour merging commits across the day so it doesn’t seem like it takes as much time, it really does take less time. The reason for this is that you are eliminating the mental ramp-up time required when you save this for the end of the day or worse, the end of the week.
A good way to think about this is efficiency in testing and fixing bugs. Fixing bugs while your team is actively engaged in development is vastly more efficient than fixing bugs after your team has disbanded and moved on to something else. While development is in progress, everyone is already engaged and can rapidly jump to the source of a problem, get it fixed, and move on. Your brain operates the same way. While you are working on a particular piece of code, your brain keeps a mental model of that code so that you can quickly navigate from one area to another implementing features. If you have to merge changes and you already have that mental model, you know exactly how those changes will impact your code and what needs to be done to resolve any impacts.
These two practices really aren’t that hard to implement with your team. Sublime has features that are designed specifically for making this easy, but even if you are using a different product you can still work to implement these practices. Once you have worked this way for a few days I guarantee you’ll never want to go back.
We just released a minor update for Sublime. This is mostly a bug-fix release but it does include one new feature. You can install 1.2.2 right over your existing 1.2 or 1.1 release so upgrading should be a snap. See the release notes below for full details:
New Features:
Bug Fixes:
Head over to the downloads page to grab Sublime 1.2.2.
Right now I feel like one of those “I must be crazy my prices are so low” guys on local TV. But that’s because in celebration of the release of Sublime 1.2 we are cutting our prices by 50%! Starting today until the end of Summer (September 21st to be exact) all Sublime licenses are 50% off if you enter the promo code “SUMMER” during checkout.
If you’ve been trying an evaluation version Sublime then now is a great time to buy! Or if you are planning for additions to your team in the future, go ahead and grab some extra licenses now while the price is so low.
Go check out the details in our online store.
We just pushed the final bits live and you can download Sublime 1.2 now! Version 1.2 can be installed right over top of your existing Sublime 1.1 installation so upgrading is a snap!
We are super excited about Sublime 1.2 and feel that it’s the best version of Sublime yet. Version 1.2 introduces a slew of new features and enhancements. Check out the release notes for the complete list of new features and bug fixes included. Below are the highlights:
I LOVE this new feature. I find it to be incredibly useful on a daily basis. And building tools that you yourself find useful and productive is one of the most rewarding aspects of this business.
Sublime 1.2 ships with a new default home page which is personalized for each user. It shows a list of active repositories that you have access to, and an activity stream for those repositories. This makes it very easy to quickly access the repositories you care about, and see exactly who is committing to those repositories – all in one, streamlined view.
On the left side of the dashboard is a list of any repository that you have access to, which has been committed to in the last 15 days. This makes it very easy to quickly access repositories that you have access to and it automatically filters out old or unused repositories.
On the right side of the screen is a list of the most recent commits to these active repositories. This single, unified view lets you easily see which users are committing to the repositories you care about.
In addition, this activity stream is exposed as an RSS feed. This lets users subscribe to a single RSS feed for all of their repositories without having to subscribe to each individual repository.
All in all we feel that this is a great feature for developers. It helps everyone easily stay up to date with the activities of their team.
We’re a bit behind releasing 1.2. We had hoped to release in July and we may still, but if we don’t make it before the end of this week we’ll definitely have it ready to go by August 6th. In the meantime, here’s another preview into the new features in 1.2.
Those of you using LDAP / Active Directory for authentication will be pleased to know that with 1.2 it will be possible to use AD groups for permission management. This is accomplished by creating an “LDAP Group” and entering the name of the group in your LDAP directory. For example, if you wanted to add “Domain Users”, you would simply create a new LDAP group in Sublime named “Domain Users”. The group membership will be automatically populated based on the users in the Domain Users active directory group. Sublime will then keep this membership up to date automatically. So whenever you add new users to the group in active directory, those additions will be automatically picked up by Sublime.
Sublime is also smart enough to only give access to users who you want using Sublime in the first place. For example, if you have configured Sublime to exclude all users except those in a given OU, Sublime will respect those rules when pulling in users from your AD groups. So even if a user exists in that group, if they aren’t in the OU you specified they won’t be granted access to Sublime or Subversion.
That’s it for this post. Next time we’ll talk about the new user dashboard and user RSS feeds – promise!