<?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>BUGBUG: poor title : branchmerge</title><link>http://blogs.msdn.com/richardb/archive/tags/branchmerge/default.aspx</link><description>Tags: branchmerge</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>UI Bug: resolving multiple merge conflicts</title><link>http://blogs.msdn.com/richardb/archive/2007/06/04/ui-bug-resolving-multiple-merge-conflicts.aspx</link><pubDate>Tue, 05 Jun 2007 02:08:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3087492</guid><dc:creator>Richard Berg</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/richardb/comments/3087492.aspx</comments><wfw:commentRss>http://blogs.msdn.com/richardb/commentrss.aspx?PostID=3087492</wfw:commentRss><wfw:comment>http://blogs.msdn.com/richardb/rsscomments.aspx?PostID=3087492</wfw:comment><description>&lt;p&gt;Resolving merge conflicts is hard enough already.&amp;nbsp; Which branch is "target," again?&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/richardb/WindowsLiveWriter/ResolvingmultiplemergeconflictsaUItransl_119D5/image.png" mce_href="http://blogs.msdn.com/blogfiles/richardb/WindowsLiveWriter/ResolvingmultiplemergeconflictsaUItransl_119D5/image.png" atomicselection="true"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/richardb/WindowsLiveWriter/ResolvingmultiplemergeconflictsaUItransl_119D5/image_thumb.png" style="border: 0px none ;" alt="image" mce_src="http://blogs.msdn.com/blogfiles/richardb/WindowsLiveWriter/ResolvingmultiplemergeconflictsaUItransl_119D5/image_thumb.png" border="0" height="169" width="240"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Unfortunately there's a bug in v1 that makes it even harder.&amp;nbsp; If you select multiple conflicts in the main Resolve dialog...&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/richardb/WindowsLiveWriter/ResolvingmultiplemergeconflictsaUItransl_119D5/image_1.png" mce_href="http://blogs.msdn.com/blogfiles/richardb/WindowsLiveWriter/ResolvingmultiplemergeconflictsaUItransl_119D5/image_1.png" atomicselection="true"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/richardb/WindowsLiveWriter/ResolvingmultiplemergeconflictsaUItransl_119D5/image_thumb_1.png" style="border: 0px none ;" alt="image" mce_src="http://blogs.msdn.com/blogfiles/richardb/WindowsLiveWriter/ResolvingmultiplemergeconflictsaUItransl_119D5/image_thumb_1.png" border="0" height="136" width="240"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;...then you get this abomination:&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/richardb/WindowsLiveWriter/ResolvingmultiplemergeconflictsaUItransl_119D5/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/richardb/WindowsLiveWriter/ResolvingmultiplemergeconflictsaUItransl_119D5/image_2.png" atomicselection="true"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/richardb/WindowsLiveWriter/ResolvingmultiplemergeconflictsaUItransl_119D5/image_thumb_2.png" style="border: 0px none ;" alt="image" mce_src="http://blogs.msdn.com/blogfiles/richardb/WindowsLiveWriter/ResolvingmultiplemergeconflictsaUItransl_119D5/image_thumb_2.png" border="0" height="222" width="509"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Yikes!&amp;nbsp; Allow me to translate.&lt;/p&gt; &lt;table unselectable="on" border="1" cellpadding="2" cellspacing="0" width="695"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="183"&gt;&lt;b&gt;Command line / client API&lt;/b&gt;&lt;/td&gt; &lt;td valign="top" width="250"&gt;&lt;b&gt;"Resolve version conflict" dialog&lt;/b&gt;&lt;/td&gt; &lt;td valign="top" width="255"&gt;&lt;b&gt;"Resolve selected conflicts" dialog&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="185"&gt;AcceptMerge&lt;/td&gt; &lt;td valign="top" width="250"&gt;Merge changes for me&lt;/td&gt; &lt;td valign="top" width="255"&gt;Merge changes for me&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="186"&gt;AcceptYours&lt;/td&gt; &lt;td valign="top" width="250"&gt;Keep changes in target branch&lt;/td&gt; &lt;td valign="top" width="255"&gt;Discard server changes&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="188"&gt;AcceptTheirs&lt;/td&gt; &lt;td valign="top" width="250"&gt;Copy item from source branch&lt;/td&gt; &lt;td valign="top" width="255"&gt;Undo my local changes&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;Sorry about this.&amp;nbsp; We knew about it before RTM, but caught it too late in the product cycle to fix it correctly.&amp;nbsp; Adding more intelligence to&amp;nbsp;this dialog&amp;nbsp;was one of the changes we took in Orcas --&amp;nbsp;and we're still tweaking things, trying to improve usability here &amp;amp; there without breaking anything.&amp;nbsp; (A complete revamp of the workflow will have to wait for Rosario).&amp;nbsp; If you find any more dialogs worthy of &lt;a href="http://worsethanfailure.com/Default.aspx" mce_href="http://worsethanfailure.com/Default.aspx"&gt;WorseThanFailure&lt;/a&gt; vilification in Beta 2, please let us know!&lt;/p&gt;&lt;p&gt;edit: just to prove how confusing this is, my chart was wrong...thanks to Chris Sidi for the correction&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3087492" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/richardb/archive/tags/tfs/default.aspx">tfs</category><category domain="http://blogs.msdn.com/richardb/archive/tags/branchmerge/default.aspx">branchmerge</category></item><item><title>TFS Branch &amp; Merge whitepaper plus recommended links</title><link>http://blogs.msdn.com/richardb/archive/2007/03/21/tfs-branch-amp-merge-whitepaper-plus-recommended-links.aspx</link><pubDate>Thu, 22 Mar 2007 06:25:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1928643</guid><dc:creator>Richard Berg</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/richardb/comments/1928643.aspx</comments><wfw:commentRss>http://blogs.msdn.com/richardb/commentrss.aspx?PostID=1928643</wfw:commentRss><wfw:comment>http://blogs.msdn.com/richardb/rsscomments.aspx?PostID=1928643</wfw:comment><description>&lt;P&gt;It's finally here!&amp;nbsp; Our first real guidance on branching &amp;amp; merging has been posted, on &lt;A href="http://www.codeplex.com/BranchingGuidance/" mce_href="http://www.codeplex.com/BranchingGuidance/"&gt;a Codeplex wiki&lt;/A&gt; no less.&amp;nbsp; I reviewed several drafts of the paper, but the real credit goes to &lt;A href="http://blogs.msdn.com/mrod/" mce_href="http://blogs.msdn.com/mrod/"&gt;Mario&lt;/A&gt; for driving our (the product group's) side of the process.&amp;nbsp; Congrats to him, the UE team, and the VSTS Rangers on this milestone.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Definitely watch the recent Channel9 &lt;A href="http://channel9.msdn.com/ShowPost.aspx?PostID=278226" mce_href="http://channel9.msdn.com/ShowPost.aspx?PostID=278226"&gt;"Branching 101" interview&lt;/A&gt;&amp;nbsp;while you're at it.&amp;nbsp; I get asked for branch/merge guidance constantly on the MSDN forums; while there are lots of good resources on the web, the interview &amp;amp; whitepaper above make relevant recommendations much easier, especially for TFS users.&amp;nbsp; If you finish those two and still want more, make CMCrossroad's encyclopedic &lt;A href="http://www.cmcrossroads.com/bradapp/acme/branching/" mce_href="http://www.cmcrossroads.com/bradapp/acme/branching/"&gt;Streamed Lines&lt;/A&gt; your next -- and probably final -- stop.&lt;/P&gt;
&lt;P&gt;Next in the pipeline: best practices for Team Projects, headed up by the same &lt;A href="http://webphysics.davidson.edu/Alumni/DoNeumann/" mce_href="http://webphysics.davidson.edu/Alumni/DoNeumann/"&gt;Doug Neumann&lt;/A&gt;&amp;nbsp;of Channel9 fame.&amp;nbsp; (he doesn't have a blog, so I'm going to embarrass him by linking up his old homepage instead)&amp;nbsp; What substructures can I create within a Team Project?&amp;nbsp; What do the &lt;A href="http://msdn2.microsoft.com/en-us/library/aa974183(vs.80).aspx" mce_href="http://msdn2.microsoft.com/en-us/library/aa974183(vs.80).aspx"&gt;TFS Team Project limits&lt;/A&gt; mean for my org?&amp;nbsp; Where do I put shared code?&amp;nbsp; If you finished the branching docs but still had questions like these, that was intentional -- branches and team projects are orthogonal, far moreso than many people think.&amp;nbsp; Stay tuned.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1928643" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/richardb/archive/tags/tfs/default.aspx">tfs</category><category domain="http://blogs.msdn.com/richardb/archive/tags/branch/default.aspx">branch</category><category domain="http://blogs.msdn.com/richardb/archive/tags/branchmerge/default.aspx">branchmerge</category><category domain="http://blogs.msdn.com/richardb/archive/tags/scm/default.aspx">scm</category></item><item><title>When your feature hits the blogosphere: SCM and the Windows Shutdown crapfest</title><link>http://blogs.msdn.com/richardb/archive/2006/12/01/when-your-feature-hits-the-blogosphere-scm-and-the-windows-shutdown-crapfest.aspx</link><pubDate>Fri, 01 Dec 2006 18:23:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1184967</guid><dc:creator>Richard Berg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/richardb/comments/1184967.aspx</comments><wfw:commentRss>http://blogs.msdn.com/richardb/commentrss.aspx?PostID=1184967</wfw:commentRss><wfw:comment>http://blogs.msdn.com/richardb/rsscomments.aspx?PostID=1184967</wfw:comment><description>&lt;p&gt;Moishe Lettvin has a &lt;a href="http://www.drizzle.com/~lettvin/2006/11/windows-shutdown-crapfest.html"&gt;great blog entry&lt;/a&gt;, an inside look at&amp;nbsp;how a&amp;nbsp;Vista feature ate thousands of man-hours on its way to the lowest common denominator.&amp;nbsp; I don't mind the UI myself (and certainly won't justify Joel's histrionics with a link) but it does illustrate several common pitfalls in large-scale software development.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;Windows has a tree of repositories: developers check in to the nodes, and periodically the changes in the nodes are integrated up one level in the hierarchy. At a different periodicity, changes are integrated down the tree from the root to the nodes. In Windows, the node I was working on was 4 levels removed from the root. The periodicity of integration decayed exponentially and unpredictably as you approached the root so it ended up that it took between 1 and 3 months for my code to get to the root node, and some multiple of that for it to reach the other nodes. It should be noted too that the only common ancestor that my team, the shell team, and the kernel team shared was the root.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Well, branch integration was &lt;em&gt;my &lt;/em&gt;feature.&amp;nbsp; While my job focused more on finding bugs than architecture, you can't own branching &amp;amp; merging at Microsoft without learning a lot about the broader topic of Source Configuration Management (SCM).&amp;nbsp; So I too feel tied to this debate, albeit for a very different reason.&lt;/p&gt; &lt;p&gt;The comments and trackbacks show lots of people dumbfounded at Vista's SCM practices, and not in a good way.&amp;nbsp; Sorry folks -- there are plenty of things from Vista's ship cycle to complain about, but their branch strategy isn't one of them.&amp;nbsp; Granularity in your source control is important&amp;nbsp;for large teams, and protecting the integrity of the root with intermediate stages is even more important.&amp;nbsp; Feel free to argue that the quality gates were too bureaucratic or&amp;nbsp;the integration schedule too random, but they (finally) got the&amp;nbsp;fundamentals right.&lt;/p&gt; &lt;p&gt;Could the particulars of this situation be improved?&amp;nbsp; Sure.&amp;nbsp; As one commenter noted, active development &amp;amp; testing should've been able to happen closer &amp;amp; closer to the root as the feature matured.&amp;nbsp; Even more clearly, the teamwork between dependent feature groups left something to be desired.&amp;nbsp; Much of that is political.&amp;nbsp; And given everything Moishe described I don't think they could've avoiding RI/FI delays entirely.&amp;nbsp;&amp;nbsp;Still, the leadership&amp;nbsp;should've been more willing to create "interdisciplinary" branches for features that were obviously interwoven.&amp;nbsp; (I'm happy to say DevDiv is pioneering this.)&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1184967" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/richardb/archive/tags/tfs/default.aspx">tfs</category><category domain="http://blogs.msdn.com/richardb/archive/tags/branch/default.aspx">branch</category><category domain="http://blogs.msdn.com/richardb/archive/tags/branchmerge/default.aspx">branchmerge</category><category domain="http://blogs.msdn.com/richardb/archive/tags/microsoft/default.aspx">microsoft</category><category domain="http://blogs.msdn.com/richardb/archive/tags/scm/default.aspx">scm</category></item></channel></rss>