With the 2010/1d release, Windows users will now have a choice between using SQLite or SQL Server for the PureCM server. We are currently beta testing the MySQL database for Linux and Mac users so this should become available in the next six months. This blog will help you decide whether to stick with SQLite or switch over to SQL Server. I will also look at the differences between running the server on Windows, Linux or Mac using SQLite.
If you are using the native database (pre 2010/1 release) then we recommend you upgrade to SQLite or SQL Server as soon as possible. Both of these databases have better performance than the native database and are more scalable – so it is a win-win. Details on how to upgrade can be found in the PureCM Knowledge Base.
SQL Server or SQLite
SQL Server has better management tools and scales better for large teams. So if you have over 30 developers using PureCM we definitely recommend you migrate to SQL Server. If you have over 10 developers then it will depend on the developer usage. If all of the developers are doing frequent submits, merges or workspace creations then SQL Server may give you a performance boost.
If you have less than 30 developers then you need to establish whether using SQL Server will be more expensive. If you already have a SQL Server license then great, otherwise you will need to work out how much this will cost. PureCM can be configured to work with SQL Server Express – but this will not work out of the box. We plan to support SQL Server Express properly in a future release.
If SQL Server is not expensive then you need to decide whether the scalability and management benefits of SQL Server outweigh the performance benefits of using SQLite.
I installed the PureCM Server on a test Windows machine running on the LAN. I got some performance statistics using SQL Server and SQLite when submitted and creating a workspace for about 10,000 files totalling about 1.2 GB of data.
As you can see SQLite is about twice as quick when submitting data but only about 20% quicker when creating a workspace.
Windows, Linux or Mac Server
If you have decided that SQLite is the best fit for you – then you might also want to consider which OS should host the PureCM Server. Here are some performance statistics when using the PureCM GUI on Windows 7 to submit and create a workspaces for servers running the different Operating Systems.
So the server OS made no difference for creating a workspace (database reads) but Ubuntu was significantly quicker (over 50%) when submitting the file adds (database writes) when compared to Windows.
Windows, Linux or Mac Clients
Finally you might be interested to know the performance differences between clients running PureCM. Here are the statistics when running the PureCM SQLite Server on a Windows Server 2005 machine over the LAN. This is using pcm (the PureCM command line client) with the same set of files (10,000 files totalling 1.2 GB of data).
As you can see, Mac and Linux are pretty much neck and neck – but Windows is significantly slower. But when you put it in context, taking just over 3 minutes to create a workspace with 10,000 files totalling about 1.2 GB of data is impressive. So regardless of which OS you choose I am confident PureCM’s performance will beat any other version control tool.
In the last blog Kenji took a good look at some of the current and upcoming reporting systems inside PureCM. Today I'm going to take a closer look at Releases.
What is a Release?
A release is a snapshot of the code at a specific point in time. This gives you a permanent copy of your code at a specific point, which typically will remain read only. You can directly browse the content of a release and use it for internal/external/beta/etc builds or to send to your testers. Having a release gives you an easy way to tag points in your development and keep track of who is running which version of the code.
Make a release from a feature!
You don't just get to make releases of your versions. If you want to send a feature for testing before it gets integrated into the version you can also make a release of the feature.
How do I know what is in a release?
The quickest way to find a release is to navigate to the relative version/feature in the projects view and select 'Show submitted tasks and releases'. This provides you with a list of all of the changes that have gone into the version and shows at which point your releases have been created.
This gives you a very quick way to see what changes made or missed each release and also provides the interface to do more with your releases. Viewing the files contained within the release for example can be done by selecting the release and selecting the 'Show Files' option.
Seeing what files has changed between releases in very simple as well. Simply select two releases from the list and select 'Compare' from the menu. This will launch the familiar stream comparer tool which will show the files from both releases. If you are only interested in what has changed you can filter out the matching files in the options menu.
Getting the release on your local machine
The best way to get the release files to where you need them is to create a workspace. If you have an old workspace you can switch you can find your release in the 'Projects' tab listed under the correct version. Alternatively, you can simply select the correct release in the projects view as talked about above and choose 'Select Workspace'. Of course, creating a workspace to deploy a release can be scripted, e.g. using one of our build tool integrations, the command line interface or the .NET and Java APIs.
- Releases are snapshots of your code at a specific point in time
- Releases can be made from both Versions and Features
- You can view your releases by selecting 'Show Submitted Tasks and Releases' in the Projects view.
- You can get the files by simply creating a workspace.
In the next blog Lee will take a look at the process of fixing a bug in a current live release without including changes from ongoing development; the basic case of parallel development.
Why using the deployment service?
There is more than one way to get the project files stored in PureCM to a target machine:
Use the PureCM GUI and create a workspace in your target location
Use the command line client to create a workspace in your target location
Both options will create a local copy of the project files on your target machine; so that looks like a perfect way to achieve your goal. In fact, most build tools pull the latest project version that way.
However, both solutions involve installing at least one of the above clients on your target machine, and somehow triggering “update to latest”. ‘Mhmmm, I might not like that for my production environment,’ you say. ‘But I can see that this might be useful for my web developers.’
So this is where the FTP deployment service comes in. Instead of pulling the files to your target location, the deployment service pushes them there. Because it can listen to changes submitted against a stream, it’s capable of deploying them automatically. Stephen has already wrote a nice article on how you could use this service for web development.
How does it work?
The example below shows a possible setup using the FTP deployment server:
A developer submits a change to project 1, which is under source control in PureCM
The development manager merges the change to the deployment stream, which is the base stream for the FTP deployment service. Note that the deployment service can run on the same or a different machine as the PureCM server.
The FTP deployment service listens for changes and gets the change into his workspace.
Only changed files and folders are sent via FTP/SFTP to the target location.
Of course, this is only an example, but I’m sure you get the idea.
Getting the beta download
So now you know about the FTP Deployment Service, why not download the beta and tell us what you think? Is there a feature you miss, or a bug you found? Simply comment this blog or email us your comment to firstname.lastname@example.org.
Learn more >>
Download the FTP deployment service >>
This seems like a good time to tell you of a new feature going to be released early this year, the PureCM Deployment Service. We are always committed to not just looking after your files but also making your daily work flow easier. The deployment service will be a new stand alone service which you can run to automatically transfer files as changes are made over FTP/SFTP to a server of your choice.
Why use it?
This has been designed to enable you to keep your files up to date on a remote server without having to install PureCM on that machine. One practical example of this is keeping a website up to date on your web server.
The PureCM Deployment Service works by listening for changes in your streams using the PureCM Dot Net Client interface and then copying those changes over to the relevant servers. This takes the hassle of keeping your web server up to date away from you, while drastically speeding up the process by only copying the files that have changed. Any changed or added files are sent to the remote location, while file deletes are removed.
How to use it!
The deployment service comes with its own installer and is configured by a simple XML file, which allows you to set up multiple links between different streams and different FTP locations for full flexibility.
The PureCM Deployment Service requires a machine set up with the PureCM client installed and enough space to create workspaces for each of the streams you wish to FTP. This does not have to be on the same machine as the PureCM service.