<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Jose's Blog : Source Control</title><link>http://blogs.msdn.com/josealmeida/archive/tags/Source+Control/default.aspx</link><description>Tags: Source Control</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Synching TFS with other Source Control systems</title><link>http://blogs.msdn.com/josealmeida/archive/2008/09/17/synching-tfs-with-other-source-control-systems.aspx</link><pubDate>Wed, 17 Sep 2008 15:33:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8955402</guid><dc:creator>josealmeida</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/josealmeida/comments/8955402.aspx</comments><wfw:commentRss>http://blogs.msdn.com/josealmeida/commentrss.aspx?PostID=8955402</wfw:commentRss><description>&lt;p&gt;Many of us in the field have come across heterogeneous source control environments within the same organization. Some organizations, having multiple source control systems, wish to have some way of synchronizing TFS with their other systems. I've seen this when development teams who are used to the Microsoft development tools tend to prefer Team Foundation Sever and sometimes operations teams, who are responsible for deploying and maintaining the software produced internally maintain a portfolio of versions of the software in other control systems, like ClearCase for instance.&lt;/p&gt;  &lt;p&gt;The &lt;a target="_blank" href="http://www.codeplex.com/MigrationSyncToolkit/"&gt;TFS Migration and Synchronization Toolkit&lt;/a&gt; allows developers to build custom tools that provide migration and synchronization capabilities with other version control systems.&lt;/p&gt;  &lt;p&gt;There's a new version of this toolkit available in Codeplex. &lt;a target="_blank" href="http://www.codeplex.com/MigrationSyncToolkit/Release/ProjectReleases.aspx?ReleaseId=17337"&gt;This release&lt;/a&gt; includes enhanced support for the migration of branches and merges.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8955402" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/josealmeida/archive/tags/SCM/default.aspx">SCM</category><category domain="http://blogs.msdn.com/josealmeida/archive/tags/Source+Control/default.aspx">Source Control</category><category domain="http://blogs.msdn.com/josealmeida/archive/tags/Application+Lifecycle+Management/default.aspx">Application Lifecycle Management</category></item><item><title>Branching Strategies</title><link>http://blogs.msdn.com/josealmeida/archive/2008/01/10/branching-strategies.aspx</link><pubDate>Thu, 10 Jan 2008 21:48:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7060999</guid><dc:creator>josealmeida</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/josealmeida/comments/7060999.aspx</comments><wfw:commentRss>http://blogs.msdn.com/josealmeida/commentrss.aspx?PostID=7060999</wfw:commentRss><description>&lt;P&gt;Under Software Configuration Management, branching and merging are common features that help maintain stable code bases and scale the development effort by synchronizing parallel development. However, depending on the size of your product, the size of your team, your isolation requirements and your development cycle, parallel development can become quite overwhelming, so it's very important to define a good strategy for branching and merging that meets your needs. This isn't always straightforward, so here are a couple of guidelines I usually use to tackle this issue.&lt;/P&gt;
&lt;P&gt;The first thing I try to find out are the isolation requirements for parallel development, how many development teams there are and what are the stabilization protocols (how many quality gates there are and how many different test environments there are where these gates are checked).&lt;/P&gt;
&lt;P&gt;Having this information helps me to define the logical structure for the branching strategy as well as the physical source control structure to support it.&lt;/P&gt;
&lt;P&gt;One thing I always have to look out for, is to make sure that the logical structure is applicable to the physical structure. For this I usually define a set of use cases that act as a model that I "run" on both the physical and logical structures to check if they are supported.&lt;/P&gt;
&lt;P&gt;Here are a couple of scenarios I usually contemplate:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Fixes 
&lt;LI&gt;Release Stabilization 
&lt;LI&gt;Code Promotion&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;I try to check all of these scenarios, considering that a mix (or all) of them might occur simultaneously. Here's a possible scenario I try to work out:&lt;/P&gt;
&lt;P&gt;"Imagine there's a team working on a new release of feature A, part of another team is working on a fix of a previously released version of their feature (feature B) while the rest of the team is working on the next version. In the meanwhile, a third team is required to release feature C to a new test environment for functional testing by end-users."&lt;/P&gt;
&lt;P&gt;Some questions that I might ask for this scenario:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;How many teams/features are there?&lt;/LI&gt;
&lt;LI&gt;What should the physical structure of my source control repository be?&lt;/LI&gt;
&lt;LI&gt;How many independent branches do I need to make this scenario valid?&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;The &lt;A href="http://www.codeplex.com/BranchingGuidance" mce_href="http://www.codeplex.com/BranchingGuidance"&gt;Branching Guidance&lt;/A&gt; by the P&amp;amp;P team is an excellent place for different approaches to these questions and many more.&lt;/P&gt;
&lt;P&gt;So, what do I really look out for when defining a branching strategy?&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Good Logical Structure&lt;/LI&gt;
&lt;LI&gt;Good Physical Structure&lt;/LI&gt;
&lt;LI&gt;Make sure the logical structure is applicable to the physical structure&lt;/LI&gt;
&lt;LI&gt;Run a model on both the logical and physical structures.&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7060999" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/josealmeida/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://blogs.msdn.com/josealmeida/archive/tags/SCM/default.aspx">SCM</category><category domain="http://blogs.msdn.com/josealmeida/archive/tags/Source+Control/default.aspx">Source Control</category><category domain="http://blogs.msdn.com/josealmeida/archive/tags/Application+Lifecycle+Management/default.aspx">Application Lifecycle Management</category></item></channel></rss>