<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.3" -->
<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>SourceHosting.blog &#187; Source Code Control</title>
	<link>http://blog.sourcehosting.net</link>
	<description>Various ramblings on the subjects of SaaS, software development, source code control, configuration management and entrepreneurship</description>
	<pubDate>Thu, 08 May 2008 18:38:47 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
	<language>en</language>
			<item>
		<title>Super-Configurable Subversion Notifications</title>
		<link>http://blog.sourcehosting.net/2008/02/22/subversion-notification-perl-modules/</link>
		<comments>http://blog.sourcehosting.net/2008/02/22/subversion-notification-perl-modules/#comments</comments>
		<pubDate>Sat, 23 Feb 2008 01:13:25 +0000</pubDate>
		<dc:creator>Greg Larkin</dc:creator>
		
		<category><![CDATA[Source Code Control]]></category>

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

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

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

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

		<guid isPermaLink="false">http://blog.sourcehosting.net/2008/02/22/subversion-notification-perl-modules/</guid>
		<description><![CDATA[Hi everyone,
Are you using the Perl SVN::Notify module to generate your Subversion commit notification emails yet? If not, go install it, and try out svnnotify. It generates very nice-looking text or HTML-formatted emails, and it has loads of options to make it do just what you want. Place as many svnnotify commands as you like [...]]]></description>
			<content:encoded><![CDATA[<p>Hi everyone,</p>
<p>Are you using the Perl <a href="http://search.cpan.org/dist/SVN-Notify/" onclick="javascript:pageTracker._trackPageview('/outbound/article/search.cpan.org');" target="_blank">SVN::Notify</a> module to generate your Subversion commit notification emails yet? If not, go install it, and try out <a href="http://search.cpan.org/dist/SVN-Notify/bin/svnnotify" onclick="javascript:pageTracker._trackPageview('/outbound/article/search.cpan.org');" target="_blank">svnnotify</a>. It generates very nice-looking text or HTML-formatted emails, and it has loads of options to make it do just what you want. Place as many svnnotify commands as you like in your Subversion post-commit hook script, and off you go.</p>
<p>Unfortunately, with a large number of developers and many different projects in your repository, your post-commit script may start to look like this:</p>
<pre>
svnnotify -r $2 -d -P "SVN Commit " -O -H HTML::ColorDiff -p $1 -t dev@company.com
svnnotify -r $2 -H  Mirror::Rsync -p $1 --rsync-host devserver.company.com \
    --to /usr/local/www/htdocs --rsync-delete=yes
svnnotify -r $2 -d -P "SVN Tag Creation " -O -H HTML::ColorDiff -p $1 \
    -x builder@company.com=/tags
svnnotify -r $2 -d -P "SVN Branch Creation " -O -H HTML::ColorDiff -p $1 \
    -x builder@company.com=/branches
svnnotify -r $2 -d -P "SVN Vendor Drop " -O -H HTML::ColorDiff -p $1 \
    -x vendormgr@company.com=/vendor
svnnotify -r $2 -d -P "ClientA Special Version Commit " -O -H HTML::ColorDiff \
    -p $1 -x dev@clientA.com=/branches/clientA</pre>
<p>Yikes -that&#8217;s bound to keep any Subversion administrator up nights!  However, help is on the way from Perl developer <a href="http://search.cpan.org/~jpeacock/" onclick="javascript:pageTracker._trackPageview('/outbound/article/search.cpan.org');" target="_blank">John Peacock</a>.</p>
<p>John has created a nice wrapper around SVN::Notify named <a href="http://search.cpan.org/dist/SVN-Notify-Config/lib/SVN/Notify/Config.pm" onclick="javascript:pageTracker._trackPageview('/outbound/article/search.cpan.org');" target="_blank">SVN::Notify::Config</a>. This Perl module transforms the mess of command lines above to a cleaner, easily-editable form using <a href="http://search.cpan.org/dist/YAML/lib/YAML.pm" onclick="javascript:pageTracker._trackPageview('/outbound/article/search.cpan.org');" target="_blank">YAML</a> to express the desired svnnotify options.</p>
<p>The equivalent post-commit hook using SVN::Notify::Config is now:</p>
<pre>#!/usr/bin/perl -MSVN::Notify::Config=$0
 --- #YAML:1.0
 '':
   PATH: "/usr/bin:/usr/local/bin"
 '/':
   handler: HTML::ColorDiff
   with-diff:
   no-first-line:
   subject-prefix: "SVN Commit "
   to: dev@company.com
 '/':
   handler: Mirror::Rsync
   to: /usr/local/www/htdocs
   rsync-host: devserver.company.com
   rsync-delete: yes
 '/tags':
   handler: HTML::ColorDiff
   with-diff:
   no-first-line:
   subject-prefix: "SVN Tag Creation "
   to: builder@company.com
 '/branches':
   handler: HTML::ColorDiff
   with-diff:
   no-first-line:
   subject-prefix: "SVN Branch Creation "
   to: builder@company.com
 '/vendor':
   handler: HTML::ColorDiff
   with-diff:
   no-first-line:
   subject-prefix: "SVN Vendor Drop "
   to: vendormgr@company.com
 '/branches/clientA':
   handler: HTML::ColorDiff
   with-diff:
   no-first-line:
   subject-prefix: "ClientA Special Version Commit "
   to: dev@clientA.com</pre>
<pre></pre>
<pre></pre>
<p>That&#8217;s a lot more readable, and I expect it will be easier to maintain, even though there are more lines in the file. I&#8217;m still boning up on the YAML syntax and how this module uses it, so there may be some optimizations to be made. Feel free to send corrections!</p>
<p>The other thing I like about using YAML this way is it lends itself well to hooking into a notification management web interface, and that makes it even easier to keep those emails flowing where they should.</p>
<p>Keep in touch,<br />
Greg</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sourcehosting.net/2008/02/22/subversion-notification-perl-modules/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Subversion 1.5 Is on Its Way</title>
		<link>http://blog.sourcehosting.net/2007/12/14/new-features-in-subversion-15/</link>
		<comments>http://blog.sourcehosting.net/2007/12/14/new-features-in-subversion-15/#comments</comments>
		<pubDate>Fri, 14 Dec 2007 20:40:41 +0000</pubDate>
		<dc:creator>Greg Larkin</dc:creator>
		
		<category><![CDATA[Source Code Control]]></category>

		<category><![CDATA[code merging]]></category>

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

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

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

		<guid isPermaLink="false">http://blog.sourcehosting.net/2007/12/14/new-features-in-subversion-15/</guid>
		<description><![CDATA[Dear readers,
I participated in a CM Crossroads webinar on Wednesday that discussed new features appearing in Subversion 1.5. There are some excellent bits on the way, and the release is currently predicted for Q1 2008.
First and foremost, the new release will support Merge Tracking. This means that you will no longer have to manually keep [...]]]></description>
			<content:encoded><![CDATA[<p>Dear readers,</p>
<p>I participated in a <a href="http://www.cmcrossroads.com/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.cmcrossroads.com');" target="_blank">CM Crossroads</a> webinar on Wednesday that discussed new features appearing in Subversion 1.5. There are some excellent bits on the way, and the release is currently predicted for Q1 2008.</p>
<p>First and foremost, the new release will support <a href="http://subversion.tigris.org/merge-tracking/" onclick="javascript:pageTracker._trackPageview('/outbound/article/subversion.tigris.org');" target="_blank">Merge Tracking</a>. This means that you will no longer have to manually keep track of which merges you&#8217;ve applied and which ones you&#8217;ve intentionally skipped. Recording this information becomes harder and harder the longer a branch lives.</p>
<p>The new Merge Tracking feature will also support querying of the merge history. I hope this functionality is similar to the <a href="http://www.ipnom.com/ClearCase-Commands/findmerge.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.ipnom.com');" target="_blank">cleartool findmerge</a> command from IBM/Rational ClearCase. I began using CC in the early &#8216;9os, and the findmerge command seemed like magic at the time. It was a huge time-saver when preparing complicated releases based on the work of multiple developers.</p>
<p>Subversion 1.5 also optionally launches a graphical resolver when a conflict is detected within a merge operation over a large number of files. This allows you to manage conflicts as they happen instead of waiting until the very end of the operation to go back and manually edit the markers within each problematic file.</p>
<p><em>WebDAV write-thru proxies</em> is an interesting new feature for SaaS providers (i.e. SourceHosting.net!). It allows us to set up a number of repository proxies at various locations around the globe. Users point to the repository closest to them and perform read-only operations on it. When a write operation is performed, the proxy forwards the request to the master repository. Changes are mirrored back to the proxy for future read-only operations. I personally look forward to experimenting with this feature to increase performance for our world-wide user base.</p>
<p>One final important change also concerns service providers or those of you who operate your own repositories. If you use the <a href="http://web.mit.edu/ghudson/info/fsfs" onclick="javascript:pageTracker._trackPageview('/outbound/article/web.mit.edu');" target="_blank">FSFS repository format</a>, it stores all revision files in one monolithic directory.  The more revisions you have in your repository, the slower certain repository operations work. UNIX filesystems perform much better as trees of directories and files instead of one enormous directory with thousands of files in it. Subversion 1.5 supports a hierarchical directory tree repository format, removing the performance bottleneck as the number of revisions grows.</p>
<p>I hope that gives you a taste of what&#8217;s arriving in Subversion in 2008. For the latest details, keep an eye on the <a href="http://subversion.tigris.org/project_status.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/subversion.tigris.org');" target="_blank">Subversion project status page</a>.</p>
<p>Keep in touch,<br />
Greg</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sourcehosting.net/2007/12/14/new-features-in-subversion-15/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
