<?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 : SCM</title><link>http://blogs.msdn.com/josealmeida/archive/tags/SCM/default.aspx</link><description>Tags: SCM</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Creating a Customized Guidance Repository</title><link>http://blogs.msdn.com/josealmeida/archive/2008/09/19/creating-a-customized-guidance-repository.aspx</link><pubDate>Fri, 19 Sep 2008 04:55:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8958034</guid><dc:creator>josealmeida</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/josealmeida/comments/8958034.aspx</comments><wfw:commentRss>http://blogs.msdn.com/josealmeida/commentrss.aspx?PostID=8958034</wfw:commentRss><description>&lt;P&gt;As a consultant part of my job is to provide guidance to our customers on the best way to use our technology, namely in terms of application development practices. Over time, you start to better understand the type of customer you’re working with, what works, what doesn’t and you start to optimize your own delivery processes. You reuse material and refine it the next time around. That’s the nature of our work in the Services organization.&lt;/P&gt;
&lt;P&gt;Lately I’ve been involved in several engagements in the &lt;A target=_blank href="http://www.microsoft.com/services/microsoftservices/srv_apo.mspx" mce_href="http://www.microsoft.com/services/microsoftservices/srv_apo.mspx"&gt;Application Platform Optimization&lt;/A&gt; space, mainly the Application Lifecycle Management suite of Offerings.&lt;/P&gt;
&lt;P&gt;At the present I’m working with one customer who has gone through the &lt;A target=_blank href="http://download.microsoft.com/download/e/f/6/ef63554d-1685-48de-b684-2cb61cc99f49/alm_assessment.pdf" mce_href="http://download.microsoft.com/download/e/f/6/ef63554d-1685-48de-b684-2cb61cc99f49/alm_assessment.pdf"&gt;Assessment&lt;/A&gt; phase and we’ve arrived at a six phases maturity growth roadmap that they’re starting to implement. One of the key aspects of this type of custom engagement is that all the experience gained by the customer and all the guidance delivered by the consulting team, should be persisted by the customer. We’re working with a small team within the customer and they are the ones who will have the responsibility of creating their own guidance and internal best practices and sharing all this information with the rest of the organization. So to collect, persist, distribute and, later on, update their in-house customized guidance for application architecture, development and lifecycle management, we’ve chosen to use the &lt;A target=_blank href="http://www.codeplex.com/guidanceExplorer" mce_href="http://www.codeplex.com/guidanceExplorer"&gt;Guidance Explorer&lt;/A&gt; tool available on &lt;a href="http://www.codeplex.com"&gt;Codeplex&lt;/a&gt;.&lt;/P&gt;
&lt;P&gt;The use of this tool turned out to be a great fit for this scenario. Instead of compiling one giant document, that would go through several versions and would quickly fall out of synch, the customer is now publishing and updating guidance, based on an existing database of industry and technology best practices. Guidance articles have their own metadata, the lifecycle of each piece of guidance is independent of each other and, if needed, all the guidance can be compiled into a Word document for a hardcopy reference. Additionally, one of my favorite features is the ability to subscribe to the guidance through a published RSS feed and receive a notification whenever guidance changes or a new best practice is published.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8958034" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/josealmeida/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.msdn.com/josealmeida/archive/tags/Agile/default.aspx">Agile</category><category domain="http://blogs.msdn.com/josealmeida/archive/tags/General/default.aspx">General</category><category domain="http://blogs.msdn.com/josealmeida/archive/tags/SCM/default.aspx">SCM</category><category domain="http://blogs.msdn.com/josealmeida/archive/tags/Application+Lifecycle+Management/default.aspx">Application Lifecycle Management</category></item><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>