<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.2" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>Svn-Checkout.co.uk</title>
	<link>http://www.svn-checkout.co.uk</link>
	<description>Getting the most out of Subversion</description>
	<pubDate>Mon, 25 Aug 2008 16:48:06 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.2</generator>
	<language>en</language>
			<item>
		<title>Upgrading Subversion Repositories using dump / load</title>
		<link>http://www.svn-checkout.co.uk/2008/08/25/upgrading-subversion-repositories-using-dump-load/</link>
		<comments>http://www.svn-checkout.co.uk/2008/08/25/upgrading-subversion-repositories-using-dump-load/#comments</comments>
		<pubDate>Mon, 25 Aug 2008 16:48:06 +0000</pubDate>
		<dc:creator>mark</dc:creator>
		
		<category><![CDATA[maintance]]></category>

		<category><![CDATA[repositories]]></category>

		<category><![CDATA[subversion]]></category>

		<category><![CDATA[upgrading]]></category>

		<guid isPermaLink="false">http://www.svn-checkout.co.uk/2008/08/25/upgrading-subversion-repositories-using-dump-load/</guid>
		<description><![CDATA[Subversion 1.5 has been out for a while now, and has some nice new features so in this post I&#8217;ll describe a nice reliable and safe method of upgrading your repositories.
Experience has shown me that the best method is to use the command line tools, specifically svnadmin.
&#62; svnadmin dump oldrepo &#62; oldrepo.txt
The command &#8217;svnadmin dump&#8217; [...]]]></description>
			<content:encoded><![CDATA[<p>Subversion 1.5 has been out for a while now, and has some nice new <a href="http://subversion.tigris.org/svn_1.5_releasenotes.html">features</a> so in this post I&#8217;ll describe a nice reliable and safe method of upgrading your repositories.</p>
<p>Experience has shown me that the best method is to use the command line tools, specifically svnadmin.</p>
<pre>&gt; svnadmin dump oldrepo &gt; oldrepo.txt</pre>
<p>The command &#8217;svnadmin dump&#8217; creates a plain text file of all your revision. Included in this is a hash of each revision to check against once you start your import process.</p>
<p>Be careful not to forget to pipe the output into a file, if you don&#8217;t you will get a lot of  text flooding your terminal very quickly.</p>
<p>Now create your new version 1.5 repositoy, again using svnadmin.</p>
<pre>&gt; svnadmin create newrepo</pre>
<p>We can now import our old revisions into the new 1.5 repository using &#8217;svnadmin load&#8217;</p>
<pre>&gt; svnadmin load newrepo &lt; oldrepo.txt</pre>
<p>Svnadmin will report on screen any problems and show its progress. The process is very quick and normally takes a matter of minuites for anything other than the largest repositories.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.svn-checkout.co.uk/2008/08/25/upgrading-subversion-repositories-using-dump-load/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Subversion Presentation - GeekUp Leeds</title>
		<link>http://www.svn-checkout.co.uk/2008/03/16/subversion-presentation-geekup-leeds/</link>
		<comments>http://www.svn-checkout.co.uk/2008/03/16/subversion-presentation-geekup-leeds/#comments</comments>
		<pubDate>Sun, 16 Mar 2008 22:01:24 +0000</pubDate>
		<dc:creator>mark</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.svn-checkout.co.uk/2008/03/16/subversion-presentation-geekup-leeds/</guid>
		<description><![CDATA[I&#8217;ve always enjoyed going to GeekUp in Leeds, and next week its my turn to present. I&#8217;ll be doing a 20:20 on &#8216;Subversion -Why source control management will save your life&#8216;. With three days to go I&#8217;m still writing the slides. But there is no getting out of it now, so better get back to [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve always enjoyed going to <a href="http://geekup.org/" title="geekup leeds">GeekUp</a> in Leeds, and next week its my turn to present. I&#8217;ll be doing a <a href="http://geekup.org/wiki/index.php?title=2020Presentations" title="2020 talk">20:20</a> on &#8216;<a href="http://geekup.org/events/54/" title="Subversion GeekUp talk">Subversion -Why source control management will save your life</a>&#8216;. With three days to go I&#8217;m still writing the slides. But there is no getting out of it now, so better get back to work.</p>
<p>Hopefully the audience will be gentle.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.svn-checkout.co.uk/2008/03/16/subversion-presentation-geekup-leeds/feed/</wfw:commentRss>
		</item>
		<item>
		<title>SVN Commit/Update - Developer Best Practice</title>
		<link>http://www.svn-checkout.co.uk/2008/02/04/svn-commitupdate-developer-best-practice/</link>
		<comments>http://www.svn-checkout.co.uk/2008/02/04/svn-commitupdate-developer-best-practice/#comments</comments>
		<pubDate>Mon, 04 Feb 2008 22:51:00 +0000</pubDate>
		<dc:creator>mark</dc:creator>
		
		<category><![CDATA[commit]]></category>

		<category><![CDATA[subversion]]></category>

		<category><![CDATA[subversion client]]></category>

		<category><![CDATA[tortoise svn]]></category>

		<guid isPermaLink="false">http://www.svn-checkout.co.uk/2008/02/04/svn-commitupdate-developer-best-practice/</guid>
		<description><![CDATA[Today I have been asked to write a brief process document for a new group of developers working on a website which had only newly been integrated into Subversion. Here are a few of suggestions I will be making.
The command line syntax is very easy, this will commit all the changed files from your working [...]]]></description>
			<content:encoded><![CDATA[<p>Today I have been asked to write a brief process document for a new group of developers working on a website which had only newly been integrated into Subversion. Here are a few of suggestions I will be making.</p>
<p>The command line syntax is very easy, this will commit all the changed files from your working copy.</p>
<p><code>D:\Test\site&gt;svn commit -m "my great comment"<br />
Sending        index.html<br />
Transmitting file data .<br />
Committed revision 66.</code></p>
<p>Using the Tortoise client you can select individual files to commit, much easier than using the command line client.<br />
Try to make sure your commit comments are as clear and descriptive as possible.</p>
<blockquote><p><em>Explain why the change was made, include any bug or change reference that you have. Remember that these notes are not just for your benefit but for the many people who will be looking over the code in the future. </em></p></blockquote>
<p>Commit your changes in logical groups.</p>
<blockquote><p><em>Each time you commit changes to the repository make them as complete changes. Don&#8217;t check in half finished bug fixes or enhancements, unless you really need to. Remember someone could checkout or update to this &#8216;broken&#8217; version and be disappointed when expected functionality doesn&#8217;t work.</em></p></blockquote>
<p>Communicate to your team when changing important files.</p>
<blockquote><p><em>Each project or website has a certain set of key files, whether it is the default layout for the front page, or a function to pull information from a database. These changes effect everyone else working on the project. They need to be aware of possible issues which may arise from your changes. </em></p></blockquote>
<p>Update your working copy before you commit.</p>
<blockquote><p><em>It may be a day or a week since you checked out from the repository, in which time others may have committed changes to the files you are editing. Make sure to do an update on your working copy before you commit your changes. Then you wont get any nasty conflict messages.</em></p></blockquote>
<blockquote></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.svn-checkout.co.uk/2008/02/04/svn-commitupdate-developer-best-practice/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Creating Subversion Repositories - Windows</title>
		<link>http://www.svn-checkout.co.uk/2008/01/29/creating-subversion-repositories-windows/</link>
		<comments>http://www.svn-checkout.co.uk/2008/01/29/creating-subversion-repositories-windows/#comments</comments>
		<pubDate>Tue, 29 Jan 2008 21:08:59 +0000</pubDate>
		<dc:creator>mark</dc:creator>
		
		<category><![CDATA[configuration]]></category>

		<category><![CDATA[repositories]]></category>

		<category><![CDATA[subversion]]></category>

		<category><![CDATA[tortoise svn]]></category>

		<guid isPermaLink="false">http://www.svn-checkout.co.uk/2008/01/29/creating-subversion-repositories-windows/</guid>
		<description><![CDATA[In this post I will detail how to create a basic repository on Windows, however the process to use on other operating systems is virtually the same.
Using the Tigris Subversion Binaries
To create your own Subversion repository, you will first need to install the Subversion server software.
At the time of writing the current version was svn-1.4.5-setup.exe.
More [...]]]></description>
			<content:encoded><![CDATA[<p>In this post I will detail how to create a basic repository on Windows, however the process to use on other operating systems is virtually the same.</p>
<h3>Using the Tigris Subversion Binaries</h3>
<p>To create your own Subversion repository, you will first need to install the Subversion server software.</p>
<p>At the time of writing the current version was <a href="http://subversion.tigris.org/files/documents/15/39559/svn-1.4.5-setup.exe" title="subversion installer">svn-1.4.5-setup.exe</a>.</p>
<p>More versions are available at the <a href="http://subversion.tigris.org/project_packages.html" title="subversion download page">Project Download Page</a>.</p>
<p>Installing this will give you a Subversion folder at something like C:\Program Files\Subversion. Must regular subversion users will put the /bin folder in their path. This means they can execute the Subversion binaries from any location on the command line.</p>
<p>To create our repository will use the svnadmin.exe binary, with argument create and then the location on the file system where we want to create the repository. For example:</p>
<p><code>svnadmin create D:/temp/repo</code></p>
<p>This creates me all the required files for me to get started. I can access this repository directory using the url:</p>
<p><code>file:///D:/temp/repo</code></p>
<h3>Using TortoiseSVN</h3>
<p>Create a folder in the location you wish to create your repository. This is best to be an empty folder, on a path which contains no spaces. For example:</p>
<p><code>D:/repositories/companyname</code></p>
<p>Would be easier and better to use as apposed to.</p>
<p><code>D:/Program Files/Company Name</code></p>
<p>Right clicking on this folder will give you the &#8220;Create repository here&#8230;&#8221; function. TortoiseSVN gives you the option of two flat file system databases, Native Filesystem (FSFS) and Berkeley Database (BDB). Your best option is to pick the default FSF, BDB will not work over a local network, not even a remote share.</p>
<p>You can now access this repository via the url:</p>
<p><code>file:///D:/repositories/companyname</code></p>
<p>Obviously there will be nothing available yet, my previous post details how to <a href="http://www.svn-checkout.co.uk/2008/01/23/integrating-an-established-project-into-subversion/" title="importing projects into subversion">import established projects into subversion</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.svn-checkout.co.uk/2008/01/29/creating-subversion-repositories-windows/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How and to create efficient Branches using Subversion</title>
		<link>http://www.svn-checkout.co.uk/2008/01/26/how-and-to-create-efficient-branches-using-subversion/</link>
		<comments>http://www.svn-checkout.co.uk/2008/01/26/how-and-to-create-efficient-branches-using-subversion/#comments</comments>
		<pubDate>Sat, 26 Jan 2008 17:42:23 +0000</pubDate>
		<dc:creator>mark</dc:creator>
		
		<category><![CDATA[branching]]></category>

		<category><![CDATA[release management]]></category>

		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://www.svn-checkout.co.uk/2008/01/26/how-and-to-create-efficient-branches-using-subversion/</guid>
		<description><![CDATA[To a lot of people Branching is a dark art which should be avoided at all costs. This makes me sad since its such a great feature of most version control systems. A branch is normally a copy of the trunk which is totally isolated from the Trunk. Creating a Branch allows you to create [...]]]></description>
			<content:encoded><![CDATA[<p>To a lot of people Branching is a dark art which should be avoided at all costs. This makes me sad since its such a great feature of most version control systems. A branch is normally a copy of the trunk which is totally isolated from the Trunk. Creating a Branch allows you to create parallel or more development streams.</p>
<p>Even though Branches aren&#8217;t a dark art, they are a little more complicated than most things in version control. This shouldn&#8217;t put you off using them, as they will save you time in the long run. But you should take time to organise them and create a structured naming convention.</p>
<p>Below is a diagram of a single Branch being created from the trunk. Have a quick look at it, then I&#8217;ll describe the process in detail.</p>
<p><a href="http://www.svn-checkout.co.uk/images/10-how-to-create-efficient-branches-using-subversion/single_branch.png" title="Creating a branch in subversion" target="_blank"><img src="http://www.svn-checkout.co.uk/images/10-how-to-create-efficient-branches-using-subversion/single_branch_thumb.png" alt="Creating a branch in subversion" align="texttop" height="83" width="200" /></a></p>
<p>Firstly we need to create an anchor point to remind us when in the repositories history the branch was created. This will help us in the future if we are unsure what patches need to be applied.</p>
<p>To do this we create a Tag from the Trunk. I&#8217;m going to pretend we&#8217;re at the start of this projects life. So I have created the Tag as 1.0.0, remember to create a Tag just use the copy command in subversion and place the copy in the Tags directory in the repository.</p>
<p>Now we have a fixed position to play with we can create our Branch. This is a copy from the Tag we have just created (1.0.0), but this time placed in the Branches folder of the repository. We name our Branch with a reference to where it was created, this is where the Tag comes in. Here I will name the Branch 1.0.0_B1. Where as Tags are normally read only, Branches are not. We use branches to allow multiple development streams to work on the same pieces of code.</p>
<p>Heres an example of when to use a Branch.</p>
<p>Lets say you wanted to redevelop your database access layer of code. This may take a significant length of time. By which I mean that you might need to bug fix your existing code before the new code is available to use. This is when you would use a Branch. This allows you to seperate your new code, while allowing you to maintain your Trunk.</p>
<p>Once you are happy that your branch code is ready to be used in anger you need to get it back into the trunk. This can be done in two ways, you can checkout both the Branch and the Trunk and use a diff tool to merge the changes. The other way is to create a patch (I&#8217;ll be explaining patches in a future article).</p>
<p>Once the code is in the Trunk and tested, commit the changes and create another Tag. This will be a reference in the future of when you committed these changes. In my example I&#8217;ve named the Tag 1.1.0 to indicate a minor change to the code base.</p>
<p>Now for a more complicated example, in less detail now since I&#8217;m sure you understand the basic ideas.</p>
<p><a href="http://www.svn-checkout.co.uk/images/10-how-to-create-efficient-branches-using-subversion/branching.png" title="creating multiple branches" target="_blank"><img src="http://www.svn-checkout.co.uk/images/10-how-to-create-efficient-branches-using-subversion/branching_thumb.png" alt="multiple branches subversion" align="texttop" height="108" width="200" /></a></p>
<p>1 ) Create Tags/1.0.0</p>
<p>2 ) Create Branch/1.0.0_B1</p>
<p>Meanwhile a bug fix is made to the Trunk.</p>
<p>3 ) Create Tags/1.0.1</p>
<p>4 ) Create Branches/1.0.1_B1</p>
<p>5 ) Merge bug fix from Trunk to Branches/1.0.0_B1</p>
<p>Work is done on both Branches. Branch 1.0.0_B1 is ready to commit merge to the Trunk first.</p>
<p>6 ) Merge 1.0.0_B1 to Trunk</p>
<p>7 ) Create Tags/1.1.0</p>
<p>The 2nd Branch is now out of line with the Trunk.</p>
<p>8 ) Merge Trunk to Branch 1.0.1_B1</p>
<p>Development on the 2nd Branch has now finished and is ready to be committed to the Trunk.</p>
<p>9 ) Merge Branch 1.0.1_B1 to Trunk</p>
<p>10 ) Create Tags/1.2.0</p>
<p>Fin</p>
<p>Using a clear naming convention allows you to understand how and when you need to make merges to where. Once you are finished with the Branches you can delete them, or keep them if you are interested in the individual revision history.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.svn-checkout.co.uk/2008/01/26/how-and-to-create-efficient-branches-using-subversion/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Integrating an established project into Subversion</title>
		<link>http://www.svn-checkout.co.uk/2008/01/23/integrating-an-established-project-into-subversion/</link>
		<comments>http://www.svn-checkout.co.uk/2008/01/23/integrating-an-established-project-into-subversion/#comments</comments>
		<pubDate>Wed, 23 Jan 2008 19:18:51 +0000</pubDate>
		<dc:creator>mark</dc:creator>
		
		<category><![CDATA[integration]]></category>

		<category><![CDATA[subversion]]></category>

		<category><![CDATA[tortoise svn]]></category>

		<guid isPermaLink="false">http://www.svn-checkout.co.uk/2008/01/23/integrating-an-established-project-into-subversion/</guid>
		<description><![CDATA[This post is aim at people who are interested in version control and want to integrate their project into Subversion.
To demonstrate the process I&#8217;ve created a little Java project called DBTest, here is its layout.
DBTest
│   build.xml
│
├───lib
│       mysql-connector-java-5.0.7-bin.jar
│
├───resources
│       database.properties
│
└───src
  └───net
  [...]]]></description>
			<content:encoded><![CDATA[<p>This post is aim at people who are interested in version control and want to integrate their project into Subversion.</p>
<p>To demonstrate the process I&#8217;ve created a little Java project called DBTest, here is its layout.</p>
<pre>DBTest
│   build.xml
│
├───lib
│       mysql-connector-java-5.0.7-bin.jar
│
├───resources
│       database.properties
│
└───src
  └───net
   └───sailes
    └───DBTest
      DBTest.java</pre>
<p>Its nothing special, just one Java class, one property file, one 3rd party library and a build script to pull it all together.</p>
<p>The first thing you need to think about it the layout of your Repository. Obviously if your adding to an existing repository you can follow the existing guidelines. However if your starting from brand new, its worth considering a few questions.</p>
<p><strong>How many separate projects am I liking to create?</strong></p>
<blockquote><p><em>No one likes a list of 100 separate folder they have to scroll through, it might be worth considering sub folders.</em></p></blockquote>
<p><strong>Who needs access to what projects?</strong></p>
<blockquote><p><em>Group together similar projects this will help you create easy to maintain access lists in the future.</em></p></blockquote>
<p><strong>Where should I place my trunk, tags and branches folders?</strong></p>
<blockquote><p><em>I&#8217;ve seen lots of different style, and each have their benefits.</em></p>
<pre>/trunk/projectname/src
/src/trunk/projectname
/projectname/trunk/src</pre>
<p><em>Personally I like to be able to version up specific components, so I like to have a different trunk, tags and branches folder for each project. If all your projects are interconnected you may not like this approach.</em></p></blockquote>
<p>So now I have an idea of the layout I want, I&#8217;m going to use the Tortoise SVN repo browser to create my initial folders.</p>
<p>Type in your repository url and right click the parent folder, giving you the option to &#8220;Create folder&#8230;&#8221;</p>
<p><img src="http://www.svn-checkout.co.uk/images/integrating-an-established-project-into-subversion/project_create_folder_menu.png" alt="Create folder menu" align="texttop" height="408" width="530" /></p>
<p>Give your project folder a name &#8220;DBTest&#8221;</p>
<p><img src="http://www.svn-checkout.co.uk/images/integrating-an-established-project-into-subversion/project_create_folder.png" alt="Create subversion folder" align="texttop" height="389" width="527" /></p>
<p>Now create the default Subversion folders in the same way.</p>
<p><img src="http://www.svn-checkout.co.uk/images/integrating-an-established-project-into-subversion/project_complete.png" alt="default svn folders" align="texttop" height="310" width="458" /></p>
<p>Tortoise SVN gives us a function to be able to import folders into our repository. These are the &#8220;Add folder&#8230;&#8221; or &#8220;Add file&#8230;&#8221; options. This allows you to very quickly import files directly into the repository. But be careful that you don&#8217;t add sub folders you don&#8217;t need. For example:</p>
<p><img src="http://www.svn-checkout.co.uk/images/integrating-an-established-project-into-subversion/project_import.png" alt="import svn project" align="texttop" height="435" width="582" /></p>
<p>Importing the DBTest folder directly into Trunk would give you the paths</p>
<pre>/Projects/DBTest/Trunk/DBTest/lib
/Projects/DBTest/Trunk/DBTest/resources
/Projects/DBTest/Trunk/DBTest/src</pre>
<p>Duplicating the project name. You may need to do several folder and file imports to get the structure just how you want it.</p>
<p>Another way is to checkout the Trunk folder as a working copy to your machine.</p>
<p><img src="http://www.svn-checkout.co.uk/images/integrating-an-established-project-into-subversion/project_checkout.png" alt="project checkout" align="texttop" height="312" width="455" /></p>
<p>Then copy your files into the folder structure you want, then to do an svn add.</p>
<p><img src="http://www.svn-checkout.co.uk/images/integrating-an-established-project-into-subversion/project_add.png" alt="project add" align="texttop" height="386" width="479" /></p>
<p>You can then commit your files once your happy that you&#8217;ve not broken anything.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.svn-checkout.co.uk/2008/01/23/integrating-an-established-project-into-subversion/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Document Management using Subversion</title>
		<link>http://www.svn-checkout.co.uk/2008/01/22/document-management-using-subversion/</link>
		<comments>http://www.svn-checkout.co.uk/2008/01/22/document-management-using-subversion/#comments</comments>
		<pubDate>Tue, 22 Jan 2008 17:58:30 +0000</pubDate>
		<dc:creator>mark</dc:creator>
		
		<category><![CDATA[documentation]]></category>

		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://www.svn-checkout.co.uk/2008/01/22/document-management-using-subversion/</guid>
		<description><![CDATA[Dom:
&#8220;I&#8217;d like to see a post on  uses of SVN on a home computer, like document management, multi computer  syncing&#8221;
 
This is the process I&#8217;m currently pushing for where I work. For all documentation I receive on projects I have to work on. I think it works well for all non source code [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.thehodge.co.uk/" title="Dom Hodgeson">Dom</a>:</p>
<address>&#8220;I&#8217;d like to see a post on  uses of SVN on a home computer, like document management, multi computer  syncing&#8221;</address>
<address> </address>
<p>This is the process I&#8217;m currently pushing for where I work. For all documentation I receive on projects I have to work on. I think it works well for all non source code documentation, but I have a feeling there will be mixed opinions. So lets see how we go&#8230;</p>
<p class="MsoNormal">We use Subversion to track changes that we make mainly in source code. These are plain text files, 90% of the time human readable. Using diff tools it makes it really easy to spot what has changed between versions. However a lot of documentation is written in proprietary formats which are unreadable to humans (Microsoft Word for example). You could just check these into Subversion, but you are losing a lot of the benefits you would normally gain from version control. Unless you were going to write very detailed comments for each revision, you would only be using Subversion as a glorified backup system.</p>
<p class="MsoNormal">My suggestion is this:</p>
<p class="MsoNormal">Write your documentation in a simple way, in plain text. This doesn&#8217;t mean you have to start writing everything as .txt files using notepad, but you could. A more serious suggestion is to write your documents in <strong>html</strong>. This is a plain text format, which allows very creative layout and presentation. I&#8217;m not suggest large complex websites, but just very simple &lt;p&gt; and &lt;h1&gt;&#8217;s, with the option of adding tables and images where needed.</p>
<p class="MsoNormal">Using a html format you will easily be able to see which sections of writing have changed between versions, and you will lose very little value in presentation. After all we all know that good documentation is about accuracy and clarity, not fancy word art.</p>
<p class="MsoNormal">You also get the added bonus of having a file format that is 99.9% viewable on any platform with any operating system. No more &#8220;My version of open office wont open your version of MS Word&#8221;. This is a very important consideration as you move to larger multi location teams.</p>
<p class="MsoNormal">I&#8217;ve seen some corporate repositories separate their source code and their documentation. I think this is a bit silly, personally I always advise it to be added right next to the source code and other resources. For example:</p>
<pre>MyProject/
   docs/
   lib/
   resources/
   src/</pre>
<p>To answer the second part of Dom&#8217;s question. If I want to sync with the server, I just do a svn update. This will give me the latest version which has been committed to the repository.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.svn-checkout.co.uk/2008/01/22/document-management-using-subversion/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Using Subversion for Rapid Website Development</title>
		<link>http://www.svn-checkout.co.uk/2008/01/21/using-subversion-for-rapid-website-development/</link>
		<comments>http://www.svn-checkout.co.uk/2008/01/21/using-subversion-for-rapid-website-development/#comments</comments>
		<pubDate>Mon, 21 Jan 2008 18:27:43 +0000</pubDate>
		<dc:creator>mark</dc:creator>
		
		<category><![CDATA[release management]]></category>

		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://www.svn-checkout.co.uk/2008/01/21/using-subversion-for-rapid-website-development/</guid>
		<description><![CDATA[Subversion has some excellent features, in this post we&#8217;ll be looking at how svn hooks can be used for rapid website development.
The majority of development work is done on the developers actually machine or a development team server. Normally with a working copy of the code in one directory, and sometimes a separate copy in [...]]]></description>
			<content:encoded><![CDATA[<p>Subversion has some excellent features, in this post we&#8217;ll be looking at how svn hooks can be used for rapid website development.</p>
<p>The majority of development work is done on the developers actually machine or a development team server. Normally with a working copy of the code in one directory, and sometimes a separate copy in another folder being served by Apache or IIS.</p>
<p>As the developer works on the code, they will often make some updates to their server directory to see their changes in effect. Often making lots of small changes, updating the server folder often is a pain. Here I will show you how to use svn hooks to automatically update a folders contents when you commit your latest version into the repository. This way your server will always be serving your latest work.</p>
<p>The svn repository folder structure contains five separate folders.</p>
<p><code>conf<br />
dav<br />
db<br />
hooks<br />
locks</code><br />
<code><br />
Today we are just interested in the hooks folder. This contains templates for all the events fired as you commit and work with the svn repository. They include:</p>
<p><code>start-commit.tmpl<br />
post-commit.tmpl<br />
pre-commit.tmpl<br />
post-unlock.tmpl<br />
post-lock.tmpl<br />
pre-revprop-change.tmpl<br />
pre-unlock.tmpl<br />
pre-lock.tmpl<br />
post-revprop-change.tmpl</code></p>
<p>For this task we are interested in the <strong>post-commit.tmpl</strong>, as you can guess this is fired after every commit is made to the repository.</p>
<p>For *nix systems, rename you post-commit.tmpl to post-commit and give it permissions to execute.</p>
<p>For windows systems rename to post-commit.bat, permissions don&#8217;t tend to be a problem on Windows servers.</p>
<p>The fact that you have a file named this way is enough for Subversion to know to use your hooks, there is nowhere you need to configure anything to enable these features. Now we can create the script we want to execute whenever the event fires. Remember when svn runs these scripts it does it with <strong>NO</strong> environment settings (no %PATH% etc) so you will either need to reset your variables in the script or use absolute paths.</p>
<p>Here is an example of a Windows script (I don&#8217;t have a *nix box handy right now <img src='http://www.svn-checkout.co.uk/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> )</p>
<p><code>"C:\Program Files\Subversion\bin\svn" update C:\Checkouts\test-website --username test --password test</code></p>
<p>You can see that I&#8217;m calling svn with its absolute path, and that I&#8217;m doing and svn update to a folder. Because I want this script to run with no human action, I also add the arguments for username and password. If you are running a https repository you will need to accept the certificate manually once.</p>
<p>Now we have our hook will can do an svn checkout of whatever code we want, and on every commit Subversion will fire a command to update, if there are any modifications to make they will be made.</p>
<p>We can then add a simple alias to apache to access our website.</p>
<p><code>Alias /test "C:\Checkouts\test-website"</code></p>
<p>As this aimed at a development situation, the updates are mostly small and often. This means that you should not notice any loss of performance as you work.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.svn-checkout.co.uk/2008/01/21/using-subversion-for-rapid-website-development/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Tortoise SVN Icon Bug</title>
		<link>http://www.svn-checkout.co.uk/2008/01/20/tortoise-svn-icon-bug/</link>
		<comments>http://www.svn-checkout.co.uk/2008/01/20/tortoise-svn-icon-bug/#comments</comments>
		<pubDate>Sun, 20 Jan 2008 19:19:46 +0000</pubDate>
		<dc:creator>mark</dc:creator>
		
		<category><![CDATA[subversion client]]></category>

		<category><![CDATA[tortoise svn]]></category>

		<guid isPermaLink="false">http://www.svn-checkout.co.uk/2008/01/20/tortoise-svn-icon-bug/</guid>
		<description><![CDATA[The Tortoise SVN client is implemented as a shell extension, meaning that it can add awesome little icon overlays for all your files currently under version control. Which is great, it really helps to see at a glance what the current state of your project is. Or even help you find that one file you [...]]]></description>
			<content:encoded><![CDATA[<p>The Tortoise SVN client is implemented as a shell extension, meaning that it can add awesome little icon overlays for all your files currently under version control. Which is great, it really helps to see at a glance what the current state of your project is. Or even help you find that one file you think you edited two weeks ago.</p>
<p>Sometimes this icon overlay messes up, I&#8217;m not sure why. Often the icons get stuck in the wrong state or even display completely different icon sets altogether.</p>
<p>Firstly, wait for 10 seconds after any SVN operation, then hit F5 in Windows Explorer. This should be enough time for the folder&#8217;s .svn database to update and rebuild all of the icons.</p>
<p>The Tweak UI application which comes as part of the <a href="http://www.microsoft.com/windowsxp/downloads/powertoys/xppowertoys.mspx" title="Windows Power Pack">Windows Power Pack</a> has many repair functions. One includes a &#8216;rebuild icon&#8217; option.</p>
<p><img src="http://www.svn-checkout.co.uk/images/tortoise-svn-icon-bug/tweakui_repair.png" alt="TweakUI Rebuild Icons" align="texttop" height="414" width="521" /></p>
<p>This should fix your problems pretty much instantly.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.svn-checkout.co.uk/2008/01/20/tortoise-svn-icon-bug/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How to release new versions of Websites</title>
		<link>http://www.svn-checkout.co.uk/2008/01/19/how-to-release-new-versions-of-websites/</link>
		<comments>http://www.svn-checkout.co.uk/2008/01/19/how-to-release-new-versions-of-websites/#comments</comments>
		<pubDate>Sat, 19 Jan 2008 17:47:47 +0000</pubDate>
		<dc:creator>mark</dc:creator>
		
		<category><![CDATA[release management]]></category>

		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://www.sailes.co.uk/svn-checkout/2008/01/19/how-to-release-new-versions-of-websites/</guid>
		<description><![CDATA[Just to make it clear, this post is mainly focused at script based websites such as php/asp/perl. Not complied code like Java .ear files.
Ok, so you have your latest and greatest website committed to your repository. You&#8217;ve developed it with love and attention, and you want to make it Live for the world to see. [...]]]></description>
			<content:encoded><![CDATA[<p>Just to make it clear, this post is mainly focused at script based websites such as php/asp/perl. Not complied code like Java .ear files.</p>
<p>Ok, so you have your latest and greatest website committed to your repository. You&#8217;ve developed it with love and attention, and you want to make it Live for the world to see. This post is about a structured process about how to release new versions of your code to the world, once they&#8217;ve been checked in your development environment.</p>
<p><strong><em>Version Numbers</em></strong></p>
<p>A whole blog post could be made about version numbers, but I&#8217;ll leave that for another day.</p>
<p>For most websites a simple X.Y.Z is fine. Denoting Major Version, Minor Version and Bug Fix.</p>
<p><em><strong>Creating a Tag</strong></em></p>
<p>So you with have your code in a path such as this</p>
<pre>/test-website/trunk</pre>
<p>We now want to create a snapshot of this code at this specific point in time. Subversion calls this Tagging, using TortoiseSVN you would right click the trunk and select &#8220;Copy to&#8230;&#8221;</p>
<p>We want to save this, our first version as 1.0.0 and we want to save it to the tags folder.<img src="http://www.svn-checkout.co.uk/images/how-to-release-new-versions-of-websites/making_a_tag.png" alt="making a svn tag" align="texttop" height="361" width="498" /></p>
<p>Or using the cmd line SVN client</p>
<pre>svn copy https://numbers:8443/svn/test/test-website/trunk
 https://numbers:8443/svn/test/test-website/tags/1.0.0
 -m "Tag for version 1.0.0"</pre>
<pre>/test-website/tags/1.0.0</pre>
<p><img src="http://www.svn-checkout.co.uk/images/how-to-release-new-versions-of-websites/tags.png" alt="making a svn tag" align="texttop" height="294" width="520" /></p>
<p>This creates us an absolute reference of the code at this point in time (no edits should be made to code under the tags folder, and be made read-only if possible).</p>
<p><em><strong> Releasing the Code</strong></em></p>
<p>Once we have the tag, we now want to publish it to our Live/Production environment. Whether this is a shared hosting server or a large cluster the process is the same.</p>
<p>We now do an svn checkout from our tag to our website folder.</p>
<pre>svn checkout &lt;repo_url&gt; &lt;path_to_working_copy&gt;
svn checkout https://numbers:8443/svn/test/test-website/trunk site
A    D:\Test\site/index.html</pre>
<p>We specifically do a svn checkout and not an export because we want a working copy on our server. The reason behind this becomes clear as we release new version to the server.</p>
<p>We now have a working copy of version 1.0.0 checked out to our web server. If we were to find a bug in the website and have to make an update to the site, we would make the changes to the code. Commit them to the repository, tag the code again using 1.0.1.</p>
<pre>svn copy https://numbers:8443/svn/test/test-website/trunk
 https://numbers:8443/svn/test/test-website/tags/1.0.1
 -m "Bug fix version 1.0.1"</pre>
<p>Now we want to release tag 1.0.1, we do this by doing a svn switch. This updates our current working directory to the url pass it, which in this case will be the new 1.0.1 bug fix tag.</p>
<pre>svn switch https://numbers:8443/svn/test/test-website/tags/1.0.1 site
U    site/index.html</pre>
<p>We cannot do a svn switch if we only do an export of our code to the server. By using svn switch instead we vastly reduce the time it takes to do the release, as subversion only updates the files which have changed. Using an export we would have delete the current version and export the new version.</p>
<p><strong>Remember to block access to the .svn folders on your web server</strong></p>
<pre>&lt;Directory  ~ "\.svn"&gt;
 Order allow,deny
 Deny from all
 &lt;/Directory&gt;</pre>
<p>or</p>
<pre>RedirectMatch 404 /\.svn(/|$)</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.svn-checkout.co.uk/2008/01/19/how-to-release-new-versions-of-websites/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
