<?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>Tigraine &#187; Subversion</title>
	<atom:link href="http://www.tigraine.at/category/programmierung/subversion/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tigraine.at</link>
	<description>Daniel Hoelbling talks about programming</description>
	<lastBuildDate>Fri, 03 Feb 2012 00:02:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Moving to Mercurial</title>
		<link>http://www.tigraine.at/2009/05/30/moving-to-mercurial/</link>
		<comments>http://www.tigraine.at/2009/05/30/moving-to-mercurial/#comments</comments>
		<pubDate>Sat, 30 May 2009 12:36:42 +0000</pubDate>
		<dc:creator>Daniel Hölbling</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Subversion]]></category>

		<guid isPermaLink="false">http://www.tigraine.at/?p=543</guid>
		<description><![CDATA[I feel like I’m constantly falling behind on stuff I want to post about but don’t get around to. One of which is the version control system Mercurial I have been using now for almost 4 months and loving ever since. Since Google just decided to enable Mercurial on Google Code I figured it’s a [...]]]></description>
			<content:encoded><![CDATA[<p>I feel like I’m constantly falling behind on stuff I want to post about but don’t get around to. One of which is the version control system Mercurial I have been using now for almost 4 months and loving ever since.    <br />Since Google just decided to enable <a href="http://google-opensource.blogspot.com/2009/05/support-for-mercurial-now-available-for.html">Mercurial on Google Code</a> I figured it’s a great time to write about it.</p>
<p>What is Mercurial?    <br />I’ll quote the <a href="http://bitbucket.org/help/GettingStartedWithMercurial">getting started article</a> from Bitbucket:</p>
<blockquote><h5>Introduction</h5>
<p>Mercurial is a distributed version control system, or DVCS for short. It is in the ranks of Git and Bazaar, leading a new paradigm of working with version control.</p>
</blockquote>
<blockquote><h5>Philosophy</h5>
<p>This new paradigm of distributed versioning allows for several things that centralized development does not. Specifically, it provides:</p>
<ol>
<li>Allows commits/logs even when working offline </li>
<li>Drastic increase in speed for most operations </li>
<li>Ability for anyone to have their own copy of a project, and continue work without explicit &quot;commit access&quot; </li>
<li>No requirement to publish changes </li>
<li>No need to set up a server for version controlling things (self-contained) </li>
</ol>
</blockquote>
<p>So, it’s like your&#160; own private version control system. Nobody can mess with it, you own it.    <br />Which is great, I mean: How often has a fellow coworker submitted something to your tree that made your code break? Or how often did you update before a commit just to see that the update breaks something (and your changes weren’t commited, so you’re at the mercy of merges)?</p>
<p>What also rocks is it’s simplicity. Mercurial needs no server, so even on my little pet projects I can leverage the power of a SCM system without the headache around setting up something in a central place. </p>
<p>What most people though fail to understand is that the centralized model does also mean that you need to share your private changes with the world at some time.    <br />And while doing so on a shared filesystem is very easy (when sharing with a coworker for example), doing so over the wire is non-trivial as it would require you setting up a server somewhere. </p>
<p>And that’s how I learned to love <a href="http://bitbucket.org/">Bitbucket</a>:</p>
<blockquote><p>Bitbucket&#8217;s aim is to compensate for this while maintaining the flexibility and benefits of DVCS. It does this firstly by providing a centralized location for a repository which provides a sharing-point for one or more developers to grow their code base. Secondly, it provides a set of tools that ease development and sharing of a code with the rest of the world.</p>
</blockquote>
<p>Bitbucket is free and gives you <u>150mb of disk space</u>, an <u>issue tracker</u> and a <u>wiki</u> for each of your projects. While the limitation is that only one project/repository per account can be private (not open source), there is no limit on how many public repositories you can create.</p>
<p>I suggest reading the <a href="http://bitbucket.org/help/GettingStartedWithMercurial">guides</a> on Bitbucket (<a href="http://hgbook.red-bean.com/">or the book</a>) on how HG differs from SVN and how the usual workflow looks like.     <br />Also I suggest installing TortoiseHg, this will install all the hg command-line as well as a nice shell integrated GUI like we are all used to from TortoiseSVN.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tigraine.at/2009/05/30/moving-to-mercurial/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Sourcecontrol and Databases, when ORM comes in handy</title>
		<link>http://www.tigraine.at/2008/10/30/sourcecontrol-and-databases-when-orm-comes-in-handy/</link>
		<comments>http://www.tigraine.at/2008/10/30/sourcecontrol-and-databases-when-orm-comes-in-handy/#comments</comments>
		<pubDate>Thu, 30 Oct 2008 11:27:16 +0000</pubDate>
		<dc:creator>Daniel Hölbling</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[NHibernate]]></category>
		<category><![CDATA[orm]]></category>
		<category><![CDATA[sourcecontrol]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://www.tigraine.at/2008/10/30/sourcecontrol-and-databases-when-orm-comes-in-handy/</guid>
		<description><![CDATA[I encourage every one (even single developers) to use a Sourcecontrol system such as SVN and AnkhSVN to do development. Put all your project files (and external dependencies) under source control and maybe even get a continuous integration server setup. And still, even if you’ve done all of this, chances are high you still have [...]]]></description>
			<content:encoded><![CDATA[<p>I encourage every one (even single developers) to use a Sourcecontrol system such as <a href="http://subversion.tigris.org/">SVN</a> and <a href="http://www.tigraine.at/2008/09/04/ankhsvn-20-subversion-client-for-visual-studio/">AnkhSVN</a> to do development. Put all your project files (<a href="http://www.tigraine.at/2008/10/13/handling-dependencies/">and external dependencies</a>) under source control and maybe even get a <a href="http://www.tigraine.at/2008/10/08/another-take-on-contiuous-integration/">continuous integration server setup</a>.</p>
<p>And still, even if you’ve done all of this, chances are high you still have one external dependency in your project: the Database!</p>
<p>And this is where the pain starts, if you don’t find some way how to put your DB schema under source control too, you’ll end up going back to old versions and having no database of that date.</p>
<p>There are however several ways to solve this that I can think of:</p>
<ul>
<li>Make your CI server fetch a schema script every time a build is triggered. </li>
<li>Make creating a schema script part of your build process </li>
</ul>
<p>And .. guess what? There’s a simpler way <img src='http://www.tigraine.at/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .    <br />If you’re using a ORM tool you should always have your database model somewhere in the mapping files.</p>
<p>Because the mapping files tell the ORM the structure of the DB, they essentially <em>contain</em> all relevant information needed to generate a schema without the need to have SQL scripts.</p>
<p>In <a href="http://www.hibernate.org/343.html">NHibernate</a> for example, you can simply do a:</p>
<div class="wlWriterEditableSmartContent" id="scid:2e6d557b-b705-4c34-b5ad-8606cf99c7de:b082d54d-9a6e-4154-9bb0-001a828ea629" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre name="code" class="csharp">
var cfg = new Configuration();
cfg.Configure();
cfg.AddAssembly(typeof (Person).Assembly);

new SchemaExport(cfg).Execute(false, true, false, false);
</pre>
</div>
<p>And the mapper will go out and create all necessary tables and relationships in your database. </p>
<p>By having an ORM capable of recreating the schema, I no longer need to keep the Database itself under source control, because the necessary information to recreate the schema is already in my source tree.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tigraine.at/2008/10/30/sourcecontrol-and-databases-when-orm-comes-in-handy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Handling dependencies</title>
		<link>http://www.tigraine.at/2008/10/13/handling-dependencies/</link>
		<comments>http://www.tigraine.at/2008/10/13/handling-dependencies/#comments</comments>
		<pubDate>Mon, 13 Oct 2008 17:37:11 +0000</pubDate>
		<dc:creator>Daniel Hölbling</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[project organization]]></category>
		<category><![CDATA[sourcecontrol]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://www.tigraine.at/2008/10/13/handling-dependencies/</guid>
		<description><![CDATA[After playing around with Log4Net and the Castle MicroKernel, I suddenly discovered that not having those external dependencies under source control makes development quite difficult. Whenever I update my dependencies, all other people on the team need to adjust theirs to match mine and vice versa. This is a minor annoyance while the team is [...]]]></description>
			<content:encoded><![CDATA[<p>After playing around with <a href="http://www.tigraine.at/2008/10/13/log4net-logging-made-easy/">Log4Net</a> and the <a href="http://www.castleproject.org/container/index.html">Castle MicroKernel</a>, I suddenly discovered that not having those external dependencies under source control makes development quite difficult.</p>
<p>Whenever I update my dependencies, all other people on the team need to adjust theirs to match mine and vice versa. This is a minor annoyance while the team is small, once you grow and have people coming in and out of the team you’ll start to feel real pain!</p>
<p>If sucks even more if you’ve already shipped your application and get called a year later to change something. Trust me, digging up the right version of library X isn’t getting easier over time, and updating the application to a new version may either break the application or cause your customers to update too (both highly undesired!).</p>
<p><strong>So, what’s the right solution to dependencies?</strong>     <br /><em>(No it’s not reinventing the wheel over and over again by writing everything by yourself)</em></p>
<p>Simple: Put the dependencies into a folder called /lib/ and reference them from there, set the “Copy To Output Directory” option to “Copy if newer”.    <br />Then add this folder to your source control and you’re set. Whenever a new guy comes to the team and gets the project from source control, he’s guaranteed to be able to build it without having to run around some random site searching for referenced assemblies.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tigraine.at/2008/10/13/handling-dependencies/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>AnkhSVN 2.0 Subversion client for Visual Studio</title>
		<link>http://www.tigraine.at/2008/09/04/ankhsvn-20-subversion-client-for-visual-studio/</link>
		<comments>http://www.tigraine.at/2008/09/04/ankhsvn-20-subversion-client-for-visual-studio/#comments</comments>
		<pubDate>Thu, 04 Sep 2008 00:15:53 +0000</pubDate>
		<dc:creator>Daniel Hölbling</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[AnkhSVN]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Source Control]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://www.tigraine.at/?p=362</guid>
		<description><![CDATA[I complained before that Visual Studio has no built in support for Subversion, as SVN is currently one of the most common source control choices for open source projects. One commenter pointed me towards AnkhSVN as a source control provider, but I wasn&#8217;t working on anything involving SVN so I didn&#8217;t install AnkhSVN right away [...]]]></description>
			<content:encoded><![CDATA[<p>I <a href="http://www.tigraine.at/2008/07/02/source-control-open-source-and-microsoft/">complained before</a> that Visual Studio has no built in support for Subversion, as SVN is currently one of the most common source control choices for open source projects.</p>
<p>One commenter pointed me towards AnkhSVN as a source control provider, but I wasn&#8217;t working on anything involving SVN so I didn&#8217;t install AnkhSVN right away &#8211; I should have done!</p>
<p><strong>AnkhSVN 2.0 is exactly what I was looking for!      <br /></strong>I installed it and it integrated itself very nicely with Visual Studio. Not acting as a AddIn but as a source control provider similar to Visual Source Safe. </p>
<p><img style="border-top-width: 0px; border-left-width: 0px; float: left; border-bottom-width: 0px; margin-bottom: 10px; margin-right: 10px; border-right-width: 0px" height="301" alt="image" src="http://www.tigraine.at/wp-content/uploads/2008/09/image1.png" width="281" border="0" /></p>
<p>So it hooks itself into your solution explorer, showing you the file status within Visual Studio</p>
<p>You can open projects directly from Subversion, and the Pending Changes window helps in keeping track of what changes need to be committed to the SVN (never forget to commit your .csproj file after adding files to your project <img src='http://www.tigraine.at/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ).</p>
<p>Overall, AnkhSVN works very well and the UI is clean and does what you&#8217;d expect from your Subversion client, and it&#8217;s good integration into Visual Studio helps. No more exception list hacking for file-based clients like Tortoise SVN.</p>
<p style="clear: both">As with most open source software, AnkhSVN is still work in progress, and I&#8217;ve already found <a href="http://ankhsvn.open.collab.net/issues/show_bug.cgi?id=495">some bugs</a>. But if this project continues to evolve I think we have a really powerful tool at our hands!</p>
<p>So, if you want to try it for yourself (strongly suggested), go and grab the latest release (I suggest installing the daily build) from the <a href="http://ankhsvn.open.collab.net/">AnkhSVN project site</a>.     <br />If you find any bugs while using the tool, please make sure to tell the developers. Their <a href="http://ankhsvn.open.collab.net/servlets/ProjectIssues">issue tracker</a> sucks, you&#8217;ll need to register and request access to the tracker (but they are pretty fast in granting access).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tigraine.at/2008/09/04/ankhsvn-20-subversion-client-for-visual-studio/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

