<?xml version="1.0" encoding="UTF-8"?>
<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/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Principia &#187; Subversion</title>
	<atom:link href="http://blog.principia-it.co.uk/category/tools-n-tips/subversion-tools-n-tips/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.principia-it.co.uk</link>
	<description>Power from Simplicity</description>
	<lastBuildDate>Tue, 07 Feb 2012 07:40:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.principia-it.co.uk' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/6f78c9f4917c134dd89eb02c5ec6e5d8?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Principia &#187; Subversion</title>
		<link>http://blog.principia-it.co.uk</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.principia-it.co.uk/osd.xml" title="Principia" />
	<atom:link rel='hub' href='http://blog.principia-it.co.uk/?pushpress=hub'/>
		<item>
		<title>Subversion&#8217;s Ignore List</title>
		<link>http://blog.principia-it.co.uk/2010/01/08/subversions-ignore-list/</link>
		<comments>http://blog.principia-it.co.uk/2010/01/08/subversions-ignore-list/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 12:44:11 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[CMCrossroads]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[Tools &#039;n&#039; Tips]]></category>
		<category><![CDATA[ignore list]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[svn add]]></category>
		<category><![CDATA[svn import]]></category>

		<guid isPermaLink="false">http://blog.principia-it.co.uk/?p=474</guid>
		<description><![CDATA[The idea behind the Subversion ignore list is very simple: when adding (using svn add or svn import) files into a Subversion repository, any file that matches a pattern on the ignore list is skipped. The ignore list is constructed from two sources: the client specific global-ignores list; any svn:ignore property associated with the directory [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=474&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The idea behind the Subversion ignore list is very simple: when adding (using <span class="code">svn add</span> or <span class="code">svn import</span>) files into a Subversion repository, any file that matches a pattern on the ignore list is skipped.</p>
<p>The ignore list is constructed from two sources:</p>
<ol>
<li>the client specific <span class="code">global-ignores</span> list;</li>
<li>any <span class="code">svn:ignore</span> property associated with the directory into which the file is being added.</li>
</ol>
<p>The <span class="code">global-ignores</span> configuration parameter is set in the client&#8217;s <span class="code">config</span> file and applies to all additions executed from that client (excluding those that specify the command line option <span class="code">&#8211;no-ignore</span>). To this <span class="code">global-ignores</span> list is added, on a directory by directory basis, any patterns associated with <span class="code">svn:ignore</span> properties associated with directories.</p>
<p>The ignore list becomes a little more complicated when combined with wildcards in file names provided to the add commands. Rather than write a long post on the subject I have provided an extract from my <a href="http://www.principia-it.co.uk/training/subversion/subversion-command-line-client" title="Subversion command line training">Subversion training</a> course (divided into two parts here because of YouTube length restrictions, it&#8217;s all one video in the course <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Oh, and WordPress, who host this blog, do not support embedded playlists. If you prefer to watch this as a playlist, go <a href="http://www.youtube.com/view_play_list?p=6916218327C09A1C">here</a>).</p>
<p>If you watch these videos here I suggest you expand then to full screen otherwise they&#8217;re too small to read (again, this is a limitation of wordpress.com hosting).</p>
<h3>Part 1</h3>
<span style="text-align:center; display: block;"><a href="http://blog.principia-it.co.uk/2010/01/08/subversions-ignore-list/"><img src="http://img.youtube.com/vi/349i5KVYMAs/2.jpg" alt="" /></a></span>
<h3>Part 2</h3>
<span style="text-align:center; display: block;"><a href="http://blog.principia-it.co.uk/2010/01/08/subversions-ignore-list/"><img src="http://img.youtube.com/vi/qoCYy0OKZtI/2.jpg" alt="" /></a></span>
<br />Posted in CMCrossroads, Subversion, Tools &#039;n&#039; Tips Tagged: ignore list, Subversion, svn, svn add, svn import <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/principiait.wordpress.com/474/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/principiait.wordpress.com/474/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/principiait.wordpress.com/474/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/principiait.wordpress.com/474/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/principiait.wordpress.com/474/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/principiait.wordpress.com/474/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/principiait.wordpress.com/474/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/principiait.wordpress.com/474/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/principiait.wordpress.com/474/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/principiait.wordpress.com/474/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/principiait.wordpress.com/474/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/principiait.wordpress.com/474/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/principiait.wordpress.com/474/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/principiait.wordpress.com/474/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=474&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.principia-it.co.uk/2010/01/08/subversions-ignore-list/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/41c439c6892b6a1b53ea8c1686324b4c?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Principia IT</media:title>
		</media:content>
	</item>
		<item>
		<title>Creating Tags in Subversion</title>
		<link>http://blog.principia-it.co.uk/2009/12/04/creating-tags-in-subversion/</link>
		<comments>http://blog.principia-it.co.uk/2009/12/04/creating-tags-in-subversion/#comments</comments>
		<pubDate>Fri, 04 Dec 2009 13:25:38 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[CMCrossroads]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[Tools &#039;n&#039; Tips]]></category>
		<category><![CDATA[svn copy]]></category>
		<category><![CDATA[tag]]></category>

		<guid isPermaLink="false">http://blog.principia-it.co.uk/?p=414</guid>
		<description><![CDATA[Subversion does not support labels as many version control tools do. Instead Subversion uses the svn copy command to create &#8216;tags&#8217;. By convention a Subversion repository is often divided into three sub-directories; trunk, where the main development is often (though not necessarily) done; branches, where (unsurprisingly) we maintain branches that may be used for any [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=414&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Subversion does not support labels as many version control tools do. Instead Subversion uses the <span class="code">svn copy</span> command to create &#8216;tags&#8217;.<br />
By convention a Subversion repository is often divided into three sub-directories;</p>
<ul>
<li><span class="code">trunk</span>, where the main development is often (though not necessarily) done;</li>
<li><span class="code">branches</span>, where (unsurprisingly) we maintain branches that may be used for any number of reasons to isolate some sequence of changes from the <span class="code">trunk</span>;</li>
<li><span class="code">tags</span>, where we maintain tagged sets of files and directories.</li>
</ul>
<p>It is this last area <span class="code">tags</span> that this post considers in more detail.<span id="more-414"></span></p>
<h1>Creating a basic tag</h1>
<p>Creating a simple tag is incredibly fast and simple. Simply <span class="code">copy</span> the thing to be tagged into the <span class="code">tags</span> directory.</p>
<p><code>svn copy http://subversion/myrepo/trunk http://subversion/myrepo/tags/release_1.0</code></p>
<p>This command creates a copy of the current revision of the <span class="code">trunk</span> in <span class="code">tags/release_1.0</span>. Creating this copy is very quick and requires almost no resources in the repository&#8217;s virtual file system<a href="#promo" title="For more details...">*</a>.</p>
<h1>Selectively tagging</h1>
<p>So, creating a straightforward tag is simple but what about more complex tags? What if we want to tag only selected files and directories within our <span class="code">trunk</span>?</p>
<p>There are many ways that this can be achieved. We will examine just one of these methods here<a href="#promo" title="For more details...">*</a>. In this example we will create a new working copy  for the tag and manually populate it with items from the repository. This method is suitable when using Subversion 1.5+ and provides complete control over what is tagged and how it is recorded in the tag.</p>
<p>First we need to create a  working copy to hold the tag. Again, there are several methods of doing this. The method shown here allows the entire tag to be created as a single transaction (more closely emulating the creation of simple tags).</p>
<p><code>svn co --depth=empty http://subversion/myrepo/tags<br />
svn mkdir tags/mynewtag</code></p>
<p>These first two commands checkout the <span class="code">tags</span> directory (but none of the existing tags are checkout because we have specified <span class="code">&#8211;depth=empty</span>. The <span class="code">mkdir</span> command then creates an empty directory <span class="code">mynewtag</span> in the <span class="code">tags</span> working copy.</p>
<p>We have not yet created a tag in the repository&#8217;s virtual file system, but we have prepared a working copy which, when <span class="code">committed</span> will do just that.</p>
<p>Having prepared our working copy we now copy items into it. In this example we are copying items from the repository into the working copy.</p>
<p><code>cd tags/mynewtag<br />
svn copy http://subversion/myrepo/trunk/file1.txt .<br />
svn copy --parents http://subversion/myrepo/trunk/dir1/file2.txt dir1/file2.txt</code></p>
<p>Notice that when copying files into nested directories I have chosen to preserve the directory structure. Using the <span class="code">&#8211;parents</span> option ensures that all the necessary intermediate directories are created and scheduled for addition as part of the copy operation.</p>
<p>We do not have to preserve the directory structure.</p>
<p><code>svn copy http://subversion/myrepo/trunk/dir1/file3.txt file3.txt</code></p>
<p>This command will create a tagged version of the <span class="code">dir1/file3.txt</span> in <span class="code">tags/mynewtag/file3.txt</span>. Similarly we can rename files, or assign them into other directories.</p>
<p>We can also tag complete sub-directories just as simply.</p>
<p><code>svn copy http://subversion/myrepo/trunk/dir2 dir2</code></p>
<p>This tags the whole <span class="code">trunk/dir2</span> as <span class="code">tags/mynewtag/dir2</span>.</p>
<p>Using the <span class="code">&#8211;revision</span> option we can control precisely which revisions are tagged (the default being <span class="code">HEAD</span>).</p>
<p><code> svn copy --revision 4 http://subversion/myrepo/trunk/dir3 dir3</code></p>
<p>This command tags the revision 4 of <span class="code">trunk/dir3</span> as <span class="code">mynewtag/dir3</span>.</p>
<p>Once we are happy that our <span class="code">mynewtag</span> working copy contains all of the items we want in the tag, we <span class="code">commit</span> the entire working copy to create the tag in the repository.</p>
<p><code>cd ..<br />
svn commit -m "Create mynewtag" .</code></p>
<p><strong><a name="promo">*</a> If you found this post useful and are keen to learn more about Subversion, you may be interesting in my <a href="http://www.principia-it.co.uk/training/subversion-command-line-client">Subversion Client training course</a>.<br />
Or, for more answers to Subversion questions, try my <a href="http://www.principia-it.co.uk/tools-n-tips/subversion-hints-and-tips/subversion-faq">Subversion FAQ</a>.</strong></p>
<br />Posted in CMCrossroads, Subversion, Tools &#039;n&#039; Tips Tagged: Subversion, svn copy, tag <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/principiait.wordpress.com/414/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/principiait.wordpress.com/414/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/principiait.wordpress.com/414/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/principiait.wordpress.com/414/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/principiait.wordpress.com/414/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/principiait.wordpress.com/414/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/principiait.wordpress.com/414/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/principiait.wordpress.com/414/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/principiait.wordpress.com/414/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/principiait.wordpress.com/414/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/principiait.wordpress.com/414/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/principiait.wordpress.com/414/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/principiait.wordpress.com/414/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/principiait.wordpress.com/414/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=414&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.principia-it.co.uk/2009/12/04/creating-tags-in-subversion/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/41c439c6892b6a1b53ea8c1686324b4c?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Principia IT</media:title>
		</media:content>
	</item>
		<item>
		<title>Allowing users to change their own password using svnserve and passwd</title>
		<link>http://blog.principia-it.co.uk/2009/07/07/allowing-users-to-change-their-own-password-using-svnserve-and-passwd/</link>
		<comments>http://blog.principia-it.co.uk/2009/07/07/allowing-users-to-change-their-own-password-using-svnserve-and-passwd/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 15:32:00 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Subversion]]></category>
		<category><![CDATA[change password]]></category>
		<category><![CDATA[hook]]></category>
		<category><![CDATA[passwd]]></category>
		<category><![CDATA[password]]></category>
		<category><![CDATA[password-db]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://blog.principia-it.co.uk/?p=202</guid>
		<description><![CDATA[One recurring issue users bring up when using Subversion&#8217;s own svnserve server and its own internal authentication system (password-db) is that users cannot easily change their own passwords. The problem is that, when using svnserve and the internal password-db, usernames and passwords are held in a plain text file, usually within the conf directory of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=202&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>One recurring issue users bring up when using Subversion&#8217;s own <span class="code">svnserve</span> server and its own internal authentication system (<span class="code">password-db</span>) is that users cannot easily change their own passwords.</p>
<p>The problem is that, when using <span class="code">svnserve</span> and the internal <span class="code">password-db</span>, usernames and passwords are held in a plain text file, usually within the <span class="code">conf</span> directory of the repository to which they apply. This file cannot be made read/writeable to all users because this would allow all users to both see and change one other&#8217;s passwords (which would be very silly).</p>
<p>The usual solution to this is for the administrator to issue passwords to users and whenever a user wishes to change their password they ask the administrator to do it for them.</p>
<p><a title="Principia's Subversion FAQ" href="http://www.principia-it.co.uk/tools-n-tips/subversion-hints-and-tips/subversion-faq/7-subversion/19-how-can-user-reset-their-passwords-in-subversion">Here</a> is a method for allowing users to change their own passwords. In summary, this is a hook script that intercepts requests to delete a special file. When an attempt is made to delete this special file the script assumes that the log message is the new password to be set for the user who requests the deletion. It then changes the entry in the local Subversion password database and rejects the request to delete the file.</p>
<p>Full details are available on the Principia <a title="Principia's Subversion FAQ" href="http://www.principia-it.co.uk/tools-n-tips/subversion-hints-and-tips/subversion-faq/7-subversion/19-how-can-user-reset-their-passwords-in-subversion">Subversion FAQ</a>.</p>
<br />Posted in Subversion Tagged: change password, hook, passwd, password, password-db, Subversion, svn <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/principiait.wordpress.com/202/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/principiait.wordpress.com/202/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/principiait.wordpress.com/202/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/principiait.wordpress.com/202/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/principiait.wordpress.com/202/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/principiait.wordpress.com/202/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/principiait.wordpress.com/202/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/principiait.wordpress.com/202/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/principiait.wordpress.com/202/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/principiait.wordpress.com/202/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/principiait.wordpress.com/202/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/principiait.wordpress.com/202/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/principiait.wordpress.com/202/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/principiait.wordpress.com/202/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=202&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.principia-it.co.uk/2009/07/07/allowing-users-to-change-their-own-password-using-svnserve-and-passwd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/41c439c6892b6a1b53ea8c1686324b4c?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Principia IT</media:title>
		</media:content>
	</item>
		<item>
		<title>Subversion Repository Quick Start</title>
		<link>http://blog.principia-it.co.uk/2009/06/23/subversion-repository-quick-start/</link>
		<comments>http://blog.principia-it.co.uk/2009/06/23/subversion-repository-quick-start/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 09:23:11 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Subversion]]></category>
		<category><![CDATA[svnadmin]]></category>
		<category><![CDATA[Training]]></category>

		<guid isPermaLink="false">http://blog.principia-it.co.uk/?p=157</guid>
		<description><![CDATA[A very quick introduction to setting up a Subversion repository and protecting it with Subversion&#8217;s own server and built in authentication system. You&#8217;ll want to watch this full screen and in HD to get the best view. This video is part of the upcoming Subversion Guru training course. Posted in Subversion, Subversion Tagged: Subversion, svnadmin, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=157&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A very quick introduction to setting up a Subversion repository and protecting it with Subversion&#8217;s own server and built in authentication system.</p>
<p>You&#8217;ll want to watch this full screen and in HD to get the best view.</p>
<span style="text-align:center; display: block;"><a href="http://blog.principia-it.co.uk/2009/06/23/subversion-repository-quick-start/"><img src="http://img.youtube.com/vi/h0K3_Y56CN0/2.jpg" alt="" /></a></span>
<p>This video is part of the upcoming <a title="Subversion training" href="http://www.principia-it.co.uk/training/subversion-guru">Subversion Guru training</a> course.</p>
<br />Posted in Subversion, Subversion Tagged: Subversion, svnadmin, Training <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/principiait.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/principiait.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/principiait.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/principiait.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/principiait.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/principiait.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/principiait.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/principiait.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/principiait.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/principiait.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/principiait.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/principiait.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/principiait.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/principiait.wordpress.com/157/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=157&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.principia-it.co.uk/2009/06/23/subversion-repository-quick-start/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/41c439c6892b6a1b53ea8c1686324b4c?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Principia IT</media:title>
		</media:content>
	</item>
		<item>
		<title>Installing Subversion on Windows</title>
		<link>http://blog.principia-it.co.uk/2009/06/22/installing-subversion-on-windows/</link>
		<comments>http://blog.principia-it.co.uk/2009/06/22/installing-subversion-on-windows/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 07:47:28 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Subversion]]></category>
		<category><![CDATA[CollabNet]]></category>
		<category><![CDATA[Training]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://blog.principia-it.co.uk/?p=132</guid>
		<description><![CDATA[Installing Subversion on Windows could not be simpler. The CollabNet installer is demonstrated in this short presentation. Posted in Subversion Tagged: CollabNet, Subversion, Training, Windows<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=132&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Installing <a class="zem_slink" title="Subversion (software)" rel="homepage" href="http://subversion.tigris.org/">Subversion</a> on Windows could not be simpler. The <a class="zem_slink" title="CollabNet" rel="homepage" href="http://www.collab.net/">CollabNet</a> installer is demonstrated in this short presentation.</p>
<span style="text-align:center; display: block;"><a href="http://blog.principia-it.co.uk/2009/06/22/installing-subversion-on-windows/"><img src="http://img.youtube.com/vi/Qwo0ffk4FRc/2.jpg" alt="" /></a></span>
<div class="zemanta-pixie" style="margin-top:10px;height:15px;"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/1ac7bf1e-1b71-48da-8a0b-6787140f4f68/"><img class="zemanta-pixie-img" style="border:medium none;float:right;" src="http://img.zemanta.com/reblog_e.png?x-id=1ac7bf1e-1b71-48da-8a0b-6787140f4f68" alt="Reblog this post [with Zemanta]" /></a></div>
<br />Posted in Subversion Tagged: CollabNet, Subversion, Training, Windows <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/principiait.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/principiait.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/principiait.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/principiait.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/principiait.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/principiait.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/principiait.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/principiait.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/principiait.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/principiait.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/principiait.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/principiait.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/principiait.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/principiait.wordpress.com/132/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=132&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.principia-it.co.uk/2009/06/22/installing-subversion-on-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/41c439c6892b6a1b53ea8c1686324b4c?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Principia IT</media:title>
		</media:content>

		<media:content url="http://img.zemanta.com/reblog_e.png?x-id=1ac7bf1e-1b71-48da-8a0b-6787140f4f68" medium="image">
			<media:title type="html">Reblog this post [with Zemanta]</media:title>
		</media:content>
	</item>
		<item>
		<title>Permanently removing paths from a Subversion repository</title>
		<link>http://blog.principia-it.co.uk/2009/06/20/permanently-removing-paths-from-a-subversion-repository/</link>
		<comments>http://blog.principia-it.co.uk/2009/06/20/permanently-removing-paths-from-a-subversion-repository/#comments</comments>
		<pubDate>Sat, 20 Jun 2009 10:13:51 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Subversion]]></category>
		<category><![CDATA[dump]]></category>
		<category><![CDATA[load]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[svnadmin]]></category>
		<category><![CDATA[svndumpfilter]]></category>

		<guid isPermaLink="false">http://blog.principia-it.co.uk/?p=75</guid>
		<description><![CDATA[This post is an extended discussion covering removal of paths from a Subversion repository, covered more succinctly in the Subversion FAQ. Before you start removing paths from your repository consider this: Subversion was not designed to have paths removed. That is why you cannot remove paths using the standard client interface, in fact you need [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=75&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This post is an extended discussion covering removal of paths from a Subversion repository, <a title="How do I permanently remove paths from my repository" href="http://www.principia-it.co.uk/tools-n-tips/subversion-hints-and-tips/subversion-faq/7-subversion/10-how-do-i-permanently-remove-paths-from-my-repository">covered more succinctly</a> in the <a title="Principia's Subversion FAQ" href="http://www.principia-it.co.uk/tools-n-tips/subversion-hints-and-tips/subversion-faq">Subversion FAQ</a>.</p>
<p>Before you start removing paths from your repository consider this: Subversion was not designed to have paths removed. That is why you cannot remove paths using the standard client interface, in fact you need to be an administrator and have direct access to the repository&#8217;s physical file system. Removing paths from a repository is a last resort. (There is a suggestion for an <span class="code">svn obliterate</span> feature to provide path removal through the standard client, for which a <a title="svn obliterate Functional Specification" href="http://svn.collab.net/repos/svn/trunk/notes/obliterate/obliterate-functional-spec.txt">functional specification</a> has been placed in the Subversion <a title="Subversion source tree development notes" href="http://svn.collab.net/repos/svn/trunk/notes">development notes</a>, but until this is implemented the following is the only mechanism available for permanently removing paths from a repository.)</p>
<p>Why might you want to permanently remove a path from your repository? Legitimate reasons include:</p>
<ul>
<li>Archive old material from a very large repository to save space.</li>
<li>Remove sensitive information from a repository (perhaps added accidentally)</li>
</ul>
<p>Strictly speaking we do not actually remove paths from a repository, we build a completely new repository. To do this we use three commands; <span class="code">svnadmin dump</span>, <span class="code">svndumpfilter</span>, <span class="code">svnadmin load</span>.<span id="more-75"></span></p>
<h1 class="code">svnadmin dump</h1>
<p>The <span class="code">svnadmin dump</span> command creates a stream of data that  describes all of the data in the repository&#8217;s virtual file system.</p>
<p><code>svnadmin dump /path/to/repository</code></p>
<p>This command will produce a stream of data describing the content of the repository at path <span class="code">/path/to/repository</span>. This stream of data is sent to <span class="code">STDOUT</span>, usually the screen by default.</p>
<p>The output from <span class="code">svnadmin dump</span> can be redirected into a file, for example.</p>
<p><code>svnadmin dump /svn/oldrepos &gt; dump.file</code></p>
<p>This command will create a dump file called <span class="code">dump.file</span> containing all of the output from the <span class="code">svnadmin dump</span> command.</p>
<h1 class="code">svnadmin load</h1>
<p>The <span class="code">svnadmin load</span> command performs the opposite function to <span class="code">svnadmin dump</span>. It takes a stream of data describing the content of a repository and loads in into a repository database. The stream is read from <span class="code">STDIN</span>, usually the keyboard by default.</p>
<p><code>svnadmin load /path/to/repository</code></p>
<p>This command will read a stream of data from <span class="code">STDIN</span> and place it into the repository at <span class="code">/path/to/repository</span>.</p>
<p>The repository at path <span class="code">/path/to/repository</span> must exist before you run the <span class="code">svnadmin load</span> command.</p>
<p>Similarly to  the <span class="code">svnadmin dump</span> command, input can be redirected.</p>
<p><code>svnadmin load /svn/newrepos &lt; dump.file</code></p>
<p>This command will read in the file <span class="code">dump.file</span> to <span class="code">STDIN</span> for the <span class="code">svnadmin load</span> command to process. In this way you can process the dump file and then load it into another repository.</p>
<p>If you wanted to copy a repostory you could use <span class="code">dump</span> and <span class="code">load</span> as follows.</p>
<p><code>svnadmin create /svn/newrepos<br />
svnadmin dump /svn/oldrepos | svnadmin load /svn/newrepos</code></p>
<p>Here the output from the <span class="code">svnadmin dump</span> command is being piped directly into the <span class="code">svnadmin load</span> command with no intermediate dump file. We will use this technique a little later to create one command line to build a new repository with paths filtered out from the original.</p>
<h1 class="code">svndumpfilter</h1>
<p><span class="code">svndumpfilter</span> reads input from <span class="code">STDIN</span> and produced output to <span class="code">STDOUT</span>. It will also include or exclude specified paths as it encounters them.</p>
<p>This allows us to <span class="code">svnadmin dump</span> a repository, filter the data with <span class="code">svndumpfilter</span> and then insert the filtered data into another repository with <span class="code">svnadmin load</span></p>
<p>The <span class="code">svndumpfilter</span> has two sub-commands, <span class="code">include</span> and <span class="code">exclude</span>. As their names suggest these specify paths we want to include in, or exclude from, the data processed through <span class="code">svndumpfilter</span>.</p>
<p><code>svndumpfilter exclude trunk</code></p>
<p>This command will read data from <span class="code">STDIN</span>, remove any references to paths beginning <span class="code">trunk</span>, and write the resulting data to <span class="code">STDOUT</span>.</p>
<p>If we have a dump file called <span class="code">dump.file</span> from which we want to remove all paths beginning <span class="code">trunk</span> and create a new dump file called <span class="code">newdump.file</span> we use the following command.</p>
<p><code>svndumpfilter exclude trunk &lt; dump.file &gt; newdump.file</code></p>
<p>We can bypass the need to use these intermediate files and chain all three commands together.</p>
<p>Suppose I have a repository at <span class="code">/svn/repos</span> and I want to remove all paths starting <span class="code">trunk/mistake</span>. We create a new, empty repostory to receive the processed data, then use <span class="code">svnadmin dump</span>, <span class="code">svndumpfilter</span> and <span class="code">svnadmin load</span> to do all the heavy lifting.</p>
<p><code>svnadmin create /svn/newrepos<br />
svnadmin dump /svn/repos | \<br />
&nbsp;svndumpfilter exclude trunk/mistake | \<br />
&nbsp;svnadmin load /svn/newrepos</code></p>
<p><span style="color:#999999;">[<span style="color:#000000;"><strong>Note:</strong></span> The '\' indicates a line continuation. The last three lines in the previous example are all one command line]</span></p>
<p>Once this is complete, we have two repositories; <span class="code">/svn/repos</span> and <span class="code">/svn/newrepos</span>. You now need to replace <span class="code">/svn/repos</span> with <span class="code">/svn/newrepos</span> (the subject perhaps of another post).</p>
<br />Posted in Subversion Tagged: dump, load, Subversion, svn, svnadmin, svndumpfilter <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/principiait.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/principiait.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/principiait.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/principiait.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/principiait.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/principiait.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/principiait.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/principiait.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/principiait.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/principiait.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/principiait.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/principiait.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/principiait.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/principiait.wordpress.com/75/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=75&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.principia-it.co.uk/2009/06/20/permanently-removing-paths-from-a-subversion-repository/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/41c439c6892b6a1b53ea8c1686324b4c?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Principia IT</media:title>
		</media:content>
	</item>
	</channel>
</rss>
