This project is part of the Ranger Quick Response Solutions family and the Branching and Merging Guide. Vladimir sums up the team’s level of “fun” and “commitment” in his from the heart feedback below.


Overview

           

Started

September 1, 2012

Why

Not simple to implement a consistent branching model as part of team project or team creation process.

Vision

Create a command line tool and an extension for the project creation process to guide and automate the branching structure.

Team

Mattias_skold Micheal Learned Foto IMG_6110 (2) (800x715) image
Esteban Garcia Mattias Sköld
(Project Lead)
Micheal Learned
(Product Owner)
Tomas Scott Vladimir Gusarov Willy-Peter Schaub

When I asked Vladimir why he is such a passionate team member he replied: “Well… First of all, I am a programmer to the marrow of my bones. I need to write code, like human needs to breathe. Secondly, I never felt  taste and specifics of agile programming in distributed team on my own hide. That is really great exercise and experience I would like to take, as I’m pushing my teams being creative and effective. Thirdly, it is great idea to implement. …and at this point I decided to stop counting and start working.”


Feedback

As promised, the team delivered the command line tool featuring the re-usable parser, source control wrapper and action execution engine for internal evaluation and testing. I immediately built the tool and gave it a test run:

❶ Test: Asking for help /?

C:\…\evaluation\Sprint3>TfsBranchTool /? 
------------------------------------------------------------------------ 
TfsBranchTool Command line utility  - (c) Community TFS Branch Tool 
------------------------------------------------------------------------ 
Usage: 
       TFSBranchTool Operation /collection:<collectionurl> /teamproject:<teamprojectname> [/root:<branchrootpath>] 
[/Feature:FeatureName]
       Operation:  one of MainOnly, Basic, Feature
       <collectionurl>: Valid URL to Team project Collection /teamproject:<teamprojectname> 
       < teamprojectname>: Team Project to apply branches to 
       < branchrootpath>. Path to where to apply branches, defaults to project root
       Samples: 
       TFSBranchTool MainOnly /collection:<collectionurl> /teamproject:<teamprojectname> 
       TFSBranchTool Basic    /collection:<collectionurl> /teamproject:<teamprojectname> 
       TFSBranchTool Feature  /collection:<collectionurl> /teamproject:<teamprojectname> /branchroot:C:\TFS\TFSTool 
/Feature:'feature1'

❷ Test: Run a MainOnly sequence

C:\…\evaluation\Sprint3>TfsBranchTool MainOnly /collection:https://demosp3.tfspreview.com/defaultcollection 
/teamproject:Ranger_Sandbox
/BranchRoot:"$/Ranger_Sandbox/fbt-test-s3/mainonly/"
MainOnly with arguments: 
Collection: https://demosp3.tfspreview.com/defaultcollection 
TeamProject: Ranger_Sandbox 
BranchRoot(optional): $/Ranger_Sandbox/fbt-test-s3/mainonly/ 
Executing 'ConnectSourceControl' operation... 
Executing 'MainBranch' operation... 
Executing 'Check-inMain' operation... 
Execution completed

And the results are …

image No branch hierarchy to show.

❸ Test: Run a Basic sequence

C:\…\evaluation\Sprint3>TfsBranchTool Basic /collection:https://demosp3.tfspreview.com/defaultcollection 
/teamproject:Ranger_Sandbox
/BranchRoot:"$/Ranger_Sandbox/fbt-test-s3/basic"
Basic with arguments: 
Collection: https://demosp3.tfspreview.com/defaultcollection 
TeamProject: Ranger_Sandbox 
BranchRoot(optional): $/Ranger_Sandbox/fbt-test-s3/basic 
Executing 'ConnectSourceControl' operation... 
Executing 'MainBranch' operation... 
Executing 'Check-inMain' operation... 
Executing 'DevBranch' operation... 
Executing 'Check-inDev' operation... 
Executing 'CreateDokFolder' operation... 
Executing 'CreateCodeFolder' operation... 
Executing 'CreateVideoFolder' operation... 
Executing 'Check-inNyDevBranchFolders' operation... 
Execution completed

And the results are …

image image

❹ Test: Run a Feature sequence

image We were able to raise the first bug, albeit a small one. The /branchroot argument needs a server path in the sprint 3 build.

C:\…\evaluation\Sprint3>TfsBranchTool Feature  /collection:https://demosp3.tfspreview.com/defaultcollection
/teamproject:Ranger_Sandbox
/BranchRoot:"$/Ranger_Sandbox/fbt-test-s3/feature" /Feature:Test1
Feature with arguments: 
Collection: https://almrangers.tfspreview.com/defaultcollection 
TeamProject: Ranger_Sandbox 
Feature: Test1 
BranchRoot(optional): $/Ranger_Sandbox/fbt-test-s3/feature 
Executing 'ConnectSourceControl' operation... 
Executing 'MainBranch' operation... 
Executing 'Check-inMain' operation... 
Executing 'CreateFeatureBranch' operation... 
Executing 'CreateMiscellaneousBranch' operation... 
Executing 'Check-inBranches' operation... 
Executing 'CreateDokFolder' operation... 
Executing 'CreateCodeFolder' operation... 
Executing 'CreateVideoFolder' operation... 
Executing 'CreateMmscellaneousDokFolder' operation... 
Executing 'CreateMiscellaneousCodeFolder' operation... 
Executing 'CreateMiscellaneousVideoFolder' operation... 
Executing 'Check-inNewFolders' operation... 
Execution completed

And the results are …

image image

 

In other words three Smile tests, some minor typo errors and a “thumbs up” to the team. During sprint 4 we are planning to release this quick response command line sample solution and continue with the next Epics, which sees us extending the Visual Studio IDE.

For those that know me these core objectives I am entrenching in the project come as no surprise:

  • Deliver a console based sample application, which is devoid of UX noise and demonstrates the concepts and allows for easy debugging /exploration.
  • Deliver a IDE extension to ensure the user need not switch context from an INTEGRATED development environment.