<?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/"
	>

<channel>
	<title>The Deployer &#187; Subversion</title>
	<atom:link href="http://thedeployer.com/category/subversion/feed" rel="self" type="application/rss+xml" />
	<link>http://thedeployer.com</link>
	<description>Technology and Development Today</description>
	<lastBuildDate>Thu, 05 Aug 2010 07:17:37 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Migrating a Subversion (SVN) repository</title>
		<link>http://thedeployer.com/2009-07-migrating-a-subversion-svn-repository</link>
		<comments>http://thedeployer.com/2009-07-migrating-a-subversion-svn-repository#comments</comments>
		<pubDate>Sat, 25 Jul 2009 07:18:25 +0000</pubDate>
		<dc:creator>Lucian Daniliuc</dc:creator>
				<category><![CDATA[Featured Articles]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[migration]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://thedeployer.com/?p=283</guid>
		<description><![CDATA[Recently I have a brand new stand-alone server for my repositories and other minor thingies. And the challenging thing: moving the repositories from my home desktop computer to this server.
My setup was this: I have my home desktop computer that runs Windows XP, and the repositories were stored and managed using VisualSVN, a great tool [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I have a brand new stand-alone server for my repositories and other minor <a href="http://www.urbandictionary.com/define.php?term=thingy">thingies</a>. And the challenging thing: moving the repositories from my home desktop computer to this server.</p>
<p>My setup was this: I have my home desktop computer that runs Windows XP, and the repositories were stored and managed using VisualSVN, a great tool to manage SVN repositories, if you&#8217;re running Windows. The applications were deployed on my Windows machine (for developing purposes) and on the hosting server (live, production deployment) that runs Linux. And here&#8217;s what I&#8217;ve done&#8230;</p>
<p><strong>On the source, Windows machine</strong></p>
<p>I&#8217;ve stopped the SVN service, so no svn updates/commits would be initiated. I&#8217;ve opened up a console and ran the following command:<br />
<code>svnadmin dump d:\Repositories\repo_a > repo_a.dump</code></p>
<p>Then I&#8217;ve packed the repo_a.dump file because it&#8217;s almost plaintext and copied the archive to the destination server.</p>
<p><strong>On the destination, Linux machine</strong></p>
<p>I&#8217;ve unpacked the dump file and then:<br />
<code>svnadmin create repo_a<br />
svnadmin load repo_a < repo_a.dump</code></p>
<p>After that, I needed to <code>chown -R www-data:www-data ./*</code> to make the files belong to apache, and then add the authentication back.</p>
<p>This is just about it for the relocation of the repositories. But we need to do one more thing: alter all the checkouts to point to the new repositories. This is done in a way on a Windows machine, and a bit different on a linux machine.</p>
<p><strong>Checked out repositories fixing</strong></p>
<p>To make all the deployed checkouts point to the new server, you need to edit every file called "entries" that is located in every ".svn" folder of a checked out repository.</p>
<p>To do that, on Windows you can use <a href="http://tools.tortoisesvn.net/grepWin" target="_blank">grepWin</a>, a lovely tool that does all the work:</p>
<p><a href="http://thedeployer.com/wp-content/uploads/2009/07/grepwin.png"><img src="http://thedeployer.com/wp-content/uploads/2009/07/grepwin-300x275.png" alt="grepwin" title="grepwin" width="300" height="275" class="aligncenter size-medium wp-image-284" /></a></p>
<p>There you have it. On linux, you'll need perl:<br />
<code>find ./ -name "entries"|xargs perl -w -i -p -e "s/svn\.example\.com/new\.server\.com/g"</code></p>
<p>This command replaces all the occurences of "svn.example.com" with "new.server.com" in all the files named "entries" in the current folder and below. Replace for your own needs.</p>
]]></content:encoded>
			<wfw:commentRss>http://thedeployer.com/2009-07-migrating-a-subversion-svn-repository/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Subversion 1.5 released</title>
		<link>http://thedeployer.com/2008-06-subversion-15-released</link>
		<comments>http://thedeployer.com/2008-06-subversion-15-released#comments</comments>
		<pubDate>Thu, 26 Jun 2008 06:25:00 +0000</pubDate>
		<dc:creator>Lucian Daniliuc</dc:creator>
				<category><![CDATA[Subversion]]></category>

		<guid isPermaLink="false">http://thedeployer.com/?p=50</guid>
		<description><![CDATA[A new version of Subversion   has been released. Subversion 1.5 brings some really useful features, like Merge tracking and Interactive Conflict Resolution (client).
Until now, when running svn update on a linux commandline that included a conflicted file, you would get a really messed up set of file regarding the conflict. That is why [...]]]></description>
			<content:encoded><![CDATA[<p>A new version of Subversion <img src='http://thedeployer.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  has been released. <span style="font-weight:bold;">Subversion 1.5</span> brings some really useful features, like <span style="font-weight:bold;">Merge tracking</span> and <span style="font-weight:bold;">Interactive Conflict Resolution (client)</span>.</p>
<p>Until now, when running <code>svn update</code> on a linux commandline that included a conflicted file, you would get a really messed up set of file regarding the conflict. That is why a HTTP server would have to be stopped while updating, since it would make the website/application unusable.</p>
<p>But now, thanks to <a href="http://subversion.tigris.org/svn_1.5_releasenotes.html#interactive-conflict-resolution" target="_blank">Interactive Conflict Resolution</a>, you could do something like the following (described on their site):</p>
<p><code><br />
$ svn up<br />
U    contrib/client-side/svnmerge/svnmerge_test.py<br />
Conflict discovered in 'contrib/client-side/svnmerge/svnmerge.py'.<br />
Select: (p) postpone, (df) diff-full, (e) edit,<br />
(s) show all options: s<br />
(p)  postpone    - mark the conflict to be resolved later<br />
(df) diff-full   - show all changes made to merged file<br />
(e)  edit        - change merged file in an editor<br />
(r)  resolved    - accept merged version of file<br />
(mf) mine-full   - accept my version of entire file (ignore their changes)<br />
(tf) theirs-full - accept their version of entire file (lose my changes)<br />
(l)  launch      - launch external tool to resolve conflict<br />
(s)  show all    - show this list</code></p>
<p>Select: (p) postpone, (df) diff-full, (e) edit,<br />
(s) show all options: tf<br />
G    contrib/client-side/svnmerge/svnmerge.py<br />
Updated to revision 25685.<br />
$</p>
<p>And finally, <a href="http://subversion.tigris.org/svn_1.5_releasenotes.html#merge-tracking" target="_blank">Merge tracking</a> means Subversion keeps track of what changes have been merged where. This reduces the overhead involved in maintaining branches, and gives users a way to inquire what changes are merged — or are available to be merged — on different lines of development.</p>
<p>Also, <a href="http://www.visualsvn.com/visualsvn/changes/1.5/" target="_blank">VisualSVN version 1.5</a> has been released to go with the latest features of Subversion.</p>
]]></content:encoded>
			<wfw:commentRss>http://thedeployer.com/2008-06-subversion-15-released/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
