<?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>Engineerography Blog &#187; Subversion</title>
	<atom:link href="http://engineerography.com/tag/subversion/feed/" rel="self" type="application/rss+xml" />
	<link>http://engineerography.com</link>
	<description>Studying and writing about everyday engineering, since 2009.</description>
	<lastBuildDate>Sun, 01 May 2011 15:26:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Managing Large Software Projects</title>
		<link>http://engineerography.com/2009/08/managing-large-software-projects/</link>
		<comments>http://engineerography.com/2009/08/managing-large-software-projects/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 13:00:32 +0000</pubDate>
		<dc:creator>Hans F.</dc:creator>
				<category><![CDATA[Science]]></category>
		<category><![CDATA[Computers]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[Version Control]]></category>

		<guid isPermaLink="false">http://engineerography.com/?p=820</guid>
		<description><![CDATA[Have you ever wondered how teams of computer programmers create large-scale programs successfully without hindering other people&#8217;s work? There are rather simple tools that keep track of versions of code being developed. This is known as version control, and one popular version control software is Subversion. There are several features in version control software that [...]]]></description>
			<content:encoded><![CDATA[<p>Have you ever wondered how teams of computer programmers create large-scale programs successfully without hindering other people&#8217;s work? There are rather simple tools that keep track of versions of code being developed. This is known as <em>version control</em>, and one popular version control software is <em>Subversion</em>. There are several features in version control software that help keep track of changes as code evolves, as well as instances where more than one person works on a particular component of a project.</p>
<p>There are three main components to version control: branches, tags, and the trunk. The trunk can be thought of the main sector of a software project: most of the development work stems from the trunk. Tags are for special milestones in a project. Branches are what they sound like: they branch off from the trunk like a tree. All versions of each file in the project, old and new, are stored in what is known as a <em>repository</em>, with version numbers denoting how old a particular revision is.</p>
<p>There are many ways to utilize the branch-tag-trunk combination, but here&#8217;s an example. Say you have a team of software engineers working on a project. The trunk would be where known good code lives &#8211; code that isn&#8217;t broken nor has bugs. When someone wants to modify the code in the trunk (perhaps to make enhancements or add features), they would create a branch in the project and do their work in the branch. After they are done making code modifications in their branch, they would <em>merge </em>their branch back into the trunk. Most of the time, version control software is smart enough to figure out which parts of a particular file were modified, and incorporate those changes when two versions of the same file are merged together. Merging can also occur when two or more people modify one file at the same time, and later on decide to commit their individual changes to the repository. This way, you can have teams of more than one person working on particular parts of a project without the hassle of figuring out who changed what when combining everyone&#8217;s contributions into one &#8211; that&#8217;s what the version control software is there for.</p>
<p style="text-align: center;">
<div id="attachment_822" class="wp-caption aligncenter" style="width: 658px"><a href="http://en.wikipedia.org/wiki/File:Subversion_project_visualization.svg"><img class="size-full wp-image-822  " title="Subversion Diagram" src="http://engineerography.com/files/2009/08/800px-Subversion_project_visualization.svg.png" alt="A simple diagram showing how version control works." width="648" height="167" /></a><p class="wp-caption-text">A simple diagram showing how version control works.</p></div>
<p>Continuing with the above example, let&#8217;s imagine a major milestone for the project has been attained (perhaps Version 1.0 of the software is complete and ready for release). The code would then be <em>tagged </em>as a tag, and would sit as that particular tagged version in the repository. This is an example of how all three components of version control software is used, and hopefully this article sheds some light onto the underworkings of large-scale software projects.</p>
<p>(Image from <a href="http://en.wikipedia.org/wiki/Subversion_%28software%29">Wikipedia</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://engineerography.com/2009/08/managing-large-software-projects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

