PROFESSIONAL
Team Foundation Server 2012
Ed BlankenshipMartin Woodward
Grant Holliday
Brian Keller
WILEY
John Wiley & Sons, Inc.
CONTENTS
INTRODUCTION xxvii
CHAPTER 1: INTRODUCING TEAM FOUNDATION SERVER 2012 3
What Is Team Foundation Server? 3
What's New in Team Foundation Server 2012 5
Version Control 5
Code Reviews 6
Managing Personal Work 6
Web Access 6
Project Management 7
Agile and Scrum Product Management 7
Stakeholder Feedback 7
Build 7
Acquisition Options 7
Team Foundation Service 8
Express 9
Trial 9
Volume Licensing 10
MSDN Subscriptions 10
Microsoft Partner Network 11
Retail 11
Summary 11
CHAPTER 2: PLANNING A DEPLOYMENT 13
Identifying and Addressing Software Engineering Pain 13
Transparency into the Release or Project 14
Collaboration Across Different Teams and Roles 15
Automated Compilation, Testing, Packaging, and Deployment 15
Managing Test Plans 15
Parallel Development 15
Adopting Team Foundation Server 16
Adoption Timeline 16
Phased Approach 17
CONTENTS
Hosting Team Foundation Server 18
Identifying Affected Teams 19
Generating Consensus 19
Team Foundation Server Administrator 20
Pilot Projects 21
Migration Strategies 21
Version Control 21
Work Item Tracking 22
Structuring Team Project Collections and Team Projects 23
Considering Limitations in Team Foundation Server 25
Server Limitations 28
Preparation for a Team Foundation Server Environment 29
Understanding the Architecture and Scale-Out Options 29
Hardware Requirements 32
Virtualization 33
Planning for Software Prerequisites 34
Service Accounts 37
File Share Folders 38
SMTP Server 38
Firewall Concerns and Ports Used 39
Friendly DNS Names 39
Legacy Visual Studio Versions 41
Summary 42
CHAPTER 3: INSTALLATION AND CONFIGURATION 43
What You'll Need 44
Team Foundation Server 2012 44
Team Foundation Server 2012 Installation Guide 45
SQL Server 2012 45
Operating System 46
SharePoint 46
Client Software 47
Service Packs and Other Updates 47
Installing Team Foundation Server 48
Installation Types 49
Configuring Team Foundation Server 51
Creating Your First Team Project 56
Configure Friendly DNS Names 57
Summary 58
xii
CONTENTS
CHAPTER 4: CONNECTING TO TEAM FOUNDATION SERVER 59
Team Foundation Server Architecture 59
Addressing Team Foundation Server 61
Introducing Team Foundation Server Security and Roles 63
Users 63
Groups 64
Permissions 65
Team Explorer 65
Understanding Team Explorer in Visual Studio 66
Connecting to Team Foundation Server from Eclipseand Cross-Platform 71
Alternate Ways to Connect to Team Foundation Server 74
Accessing Team Foundation Server Through a Web Browser 74
Using Team Foundation Server in Microsoft Excel 75
Using Team Foundation Server in Microsoft Project 76
Windows Explorer Integration with Team Foundation Server 77
Connecting Microsoft Test Manager to TeamFoundation Server 78
Access to Team Foundation Server via Third-Party Integrations 79
Summary 80
CHAPTER 5: OVERVIEW OF VERSION CONTROL 83
What Is Version Control? 83
Repository 84
Working Copy 85
Working Folder Mappings 85
Get 86
Add 86
Check-out 86
Changeset 87
Check-in 87
History 87
Branching and Merging 88
Common Version Control Products 88
Microsoft Visual SourceSafe 89
Apache Subversion 89
xiii
CONTENTS
Team Foundation Server 90
Distributed Version Control Systems 91
Summary 93
CHAPTER 6: USING TEAM FOUNDATION VERSION CONTROL 95
Getting Started with Team Foundation
Server Version Control 96
Learning what's New in Team Foundation
Server 2012 Version Control 98
Team Foundation Server Version Control Concepts 99
Workspace 99
Working Folder Mappings 103
Get 107
Check-out 109
Locks 109
Check-in of Pending Changes 110
Undo Pending Changes 117
Changeset 117
Shelvesets 119
Branches 120
Using Source Control Explorer 121
Viewing History 123
Labeling Files 123
Recovering When Things Go Wrong 124
Keeping on task with My Work 125
Team Foundation Server
Version Control in Eclipse 130
Installing the Team Foundation Server Plug-in for Eclipse 131
Sharing Eclipse Projects in Team Foundation Server 133
Importing Projects from Team Foundation Server 135
Differences Between the Eclipse and Visual Studio Clients 137
Team Foundation Server Version Control from
the Command Line 137
Getting Help 138
Using the Command Line 138
Team Foundation Version Control Power Tools
and Third-Party Utilities 139
Microsoft Visual Studio Team Foundation
Server Power Tools 139
Team Foundation Server MSSCCI Provider 140
Configuring Version Control 140
Security and Permissions 140
xiv
CONTENTS
Switching Version Control to Team Foundation Server 141
Working with Team Foundation Server for VisualSourceSafe Users 142
Using Team Foundation Server for Subversion Users 144
Summary 146
CHAPTER 7: ENSURING CODE QUALITY 147
What Is Quality? 148
Enforcing Quality 149Check-In Policies 149
Monitoring Check-In Policy Overrides 152
Check-In Policy Pack in Power Tools 154
Creating Custom Check-In Policies 155
Deploying Check-In Policies 159
Gated Check-In 164
Why Gated Check-In? 165
When Not to Use Gated Check-In 166
Setting Up a Gated Check-In Build 167
Checking In for Validation 168
Reconciling the Workspace 168
Managing Code Reviews 170
Requesting a Code Review 171
Performing a Code Review 173
Completing the Code Review 175
Summary 176
CHAPTER 8: MIGRATION FROM LEGACYVERSION CONTROL SYSTEMS 177
Migration Versus Upgrade 178
Upgrade 178
Migration 178
Migrating History or Latest Version 179
Migrating from Visual SourceSafe 180
Preparing to Use the VSS Upgrade Wizard 181
Using the Visual SourceSafe Upgrade Wizard 182
Team Foundation Server IntegrationPlatform 188
Popular Third-Party Migration Tools 190
Subversion, CVS, and StarTeam 190
ClearCase 190
Summary 191
XV
CONTENTS
CHAPTER 9: BRANCHING AND MERGING 193
Branching Demystified 193
Branch 194
Merge 194
Conflict 194
Branch Relationships 195
Baseless Merge 196
Forward/Reverse Integration 196
Common Branching Strategies 196
No Branching 197
Branch per Release 198
Code-Promotion Branching 199
Feature Branching 200
Implementing Branching Strategies 201
The Scenario 202
The Plan 202
Implementation 203
Dealing with Changesets 208
Tracking Change Through Branches 220
Summary 222
CHAPTER 10: COMMON VERSION CONTROL SCENARIOS 223
Setting Up the Folder Structure for Your Branches 223
Application Source Code 224
Automated Tests Source Code 224
Architecture Assets 224
Database Schema 225
Installer Assets 225
Build and Deployment Assets 225
Third-Party Source Code/Dependencies 226
Folder Inside Branch 226
Folder at Team Project Level 228
Internal Shared Libraries 230
Choosing a Location in Version Control 230
Storing Library Assemblies as Dependencies 233
Branching into Product Family Branches 233
Managing Artifacts Using Team Foundation Server 235
SQL Reporting Services Encryption Key Backup 235
Process Templates 236
xvi
CONTENTS
Custom Build Assemblies 237
Master Build Process Templates 238
Source Code for Custom Tools 238
Summary 239
CHAPTER 11: INTRODUCING WORK-ITEM TRACKING 243
Project Management Enhancements in Team FoundationServer 2012 244
Rich Work-Item Relationships 244
Test Case Management 245
Enhanced Reporting 245
SharePoint Server Dashboards 246
Agile Planning Tools in Team Web Access 246
Work Items 247
Work-Item Types 247
Areas and Iterations 249
Process Templates 252
MSF for Agile Software Development 253
MSF for CMMI Process Improvement 255
Visual Studio Scrum 258
Third-Party Process Templates 260
Custom Process Templates 260
Managing Work Items 260
Using Visual Studio 260
Using Microsoft Excel 266
Using Microsoft Project 267
Using Team Web Access 268
Using Third-Party Tools 270
Project Server Integration 271
Summary 271
CHAPTER 12: CUSTOMIZING PROCESS TEMPLATES 273
Anatomy of a Process Template 273
Plug-in Files 274
Default Security Groups and Permissions 276
Initial Area and Iteration Nodes 277
Work Item Type Definitions 278
xvii
CONTENTS
Initial Work Items 289
Work Item Queries and Folders 289
Microsoft Project Column Mappings 290
Version Control Permissions and Settings 290
SharePoint Project Team Portal
Document Library Settings 291
SQL Reporting Services Report Definitions 292
Using the Process Template Editor 292
Installing the Process Template Editor 293
Working with a Process Template 293
Using an XML Editor and WITAdmin 294
Deploying Updates to Process Templates 296
Uploading Process Templates in Team
Foundation Server 296
Editing Work Items on an Existing Team Project 297
Customizing Agile Tools 298
Metastates 299
Effort, Remaining Work, and Stack Rank 299
Defining the Team 300
Other Process Configuration Customizations 300
Common Work Item Type Customizations 301
Adding New States 301
Displaying Custom Link Types 302
Using Display Name Changes
(New syncnamechanges attribute) 302
Introducing Custom Work Item Controls 303
Work Item Clients 303
Work Item Control Interfaces 304
Deploying Custom Controls 308
Work Item Custom Control Deployment Manifest 309
Using the Custom Control in the Work Item
Type Definition 309
Summary 310
CHAPTER 13: MANAGING TEAMS AND AGILE PLANNING TOOLS 311
Defining a Team 312
Maintaining Product Backlogs 317
Planning Iterations 319
Tracking Work 322
Customization Options 325
Stakeholder Feedback 326
xviii
CONTENTS
Requesting Feedback 326
Providing Feedback 328
Voluntary Feedback 331
Summary 332
CHAPTER 14: REPORTING AND SHAREPOINT DASHBOARDS 333
What's New in Team Foundation Server 2012 334
Cross-Collection Reporting Support 334
Changes to the Relational Warehouse 334
Changes to the Analysis Services Cube 335
Optional and Richer SharePoint Integration 337
Team Foundation Server Data Warehouse 337
Operational Stores 338
Relational Warehouse Database and Warehouse Adapters 338
Querying the Relational Warehouse Database 339
Analysis Services Cube 342
Data Warehouse Permissions 344
SharePoint Integration 344
SharePoint Extensions 345
Excel Services and Dashboard Compatibility 345
Creating Reports 347
Tools 347
Excel Reporting from a Work-Item Query 347
SQL Server Reporting Services Reports 349
SharePoint Dashboards 355
Advanced Customization 357
Customizing Project Portals 357
Customizing Warehouse Adapters 357
TfsRedirect.aspx 358
Summary 358
CHAPTER 15: PROJECT SERVER INTEGRATION 359
Overview 359
Project Server Essentials 360
Bidirectional Synchronization 361
Relationship between Team Projects and Enterprise Projects 366
Initial Configuration 366
Necessary Permissions 366
Command-Line Tool for Configuration 367
Project Server Installation Components 367
xix
CONTENTS
One-Time Integration Steps 367
Mapping Enterprise Projects to Team Projects 368
Necessary Software for Project Managers 369
Summary 369
02il]^^^l^lII^EC£SM^PI^^^H^HHMH
CHAPTER 16: OVERVIEW OF BUILD AUTOMATION 373
Let's Build Something 373
What Is Build Automation? 374
Scripting a Build 376
Make 376
Apache Ant 377
Apache Maven 378
NAnt 379
MSBuild 379
Windows Workflow Foundation 383
Using Build Automation Servers 383
CruiseControl 384
CruiseControl.NET 384
Hudson / Jenkins 384
Team Foundation Server 385
Adopting Build Automation 386
Summary 387
CHAPTER 17: USING TEAM FOUNDATION BUILD 389
Introduction to Team Foundation Build 389
Team Foundation Build Architecture 390
Setting up the Team Foundation Build Service 392
Installing Team Foundation Build 393
Configuring the Team Foundation Build Service 393
Additional Software Required on the Build Agent 399
Working with Builds 399
Creating a Build Definition 399
Queuing a Build 411
Build Notifications and Alerts 413
Managing Builds 415
Managing Build Quality Descriptions 420
Managing Build Controllers and Build Agents 420
Understanding the Build Process 422
XX
CONTENTS
DefaultTempJate Process 423
Building Ant and Maven Projects with Team Foundation Server 435
Summary 436
CHAPTER 18: CUSTOMIZING THE BUILD PROCESS 437
Introduction to Windows Workflow Foundation 438
Visual Basic.NET Expressions 438
Custom Workflow Variables 440
Custom Build Parameters 442
Workflow Activities 449
When to Use MSBuild versus WF 457
Custom Build Workflow Activities 458
How to Create a Custom Build Activity 458
Integrating Activity into the Build Process Template 473
Deployment of Custom Build Activities 478
Customizing the Build Report Output 480
Creating a Log Data Visualizer 480
Build Summary Report Custom Section 481
Customizing the Build Process to Stampthe Version Number on Assemblies 482
Defining Custom Build Process Parameters 483
Allowing the Functionality to Be Optional 484
Defining Local Workflow Variables 485
Initializing the Local Workflow Variables 486
Finding Matching Assembly Info Files 486
Adding the Custom TfsVersion Activity 487
Summary 488
CHAPTER 19: INTRODUCTION TO TEAM FOUNDATION SERVER
ADMINISTRATION 493
Administrative Roles 494
Infrastructure Administrator 494
Team Foundation Server Administrator 494
Project Administrator 494
Logical Architecture 495
Client Tier 496
Application Tier 496
Data Tier 496
xxi
CONTENTS
Built-in Administration Tools 497
Team Foundation Administration Console 498
Command-Line Configuration Tools 516
Other Administration Tools 519
Team Foundation Server Power Tools 520
Best Practices Analyzer 520
Team Foundation Server Administration Tool 522
Team Foundation Sidekicks 523
Summary 524
CHAPTER 20: SCALABILITY AND HIGH AVAILABILITY 525
An Evolving Architecture 526
Limiting Factors 527
Microsoft Recommendations 527
Data Tier 529
Application Tier 531
Web Access 532
Warehouse 532
Team Foundation Proxy 533
Principles 534
Scale Out To Multiple Servers 535
Eliminate Single Points Of Failure 535
Anticipate Growth 535
Keep It Simple 535
Solutions 535
Data Tier 536
Application Tier and Web Access 539
Virtualization 546
Summary 547
CHAPTER 21: DISASTER RECOVERY 549
Business Continuity and Recovery Goals 549
Defining Responsibilities 550
Backing Up Team Foundation Server 550
Components to Back Up 551
Types of Database Backups 552
Important Considerations 554
Creating a Backup Plan 556
Team Foundation Server Backup Plan Details 563
Restoring a Backup to the Original Server 566
Summary 573
xxii
CONTENTS
CHAPTER 22: SECURITY AND PRIVILEGES 575
Users 575
Domain Users 575
Local Users 577
Identity Synchronization 577
Groups 579
Domain Groups 580
Distribution Groups 580
Local Groups 580
Team Foundation Server Groups 580
Permissions 583
Server Permissions 584
Team Project Collection Permissions 584
Team Project Permissions 586
Work Item Tracking 587
Version Control Permissions 591
Build Permissions 594
Reporting 594
Security Management 595
Deny, Allow, and Unset Permissions 595
Use Active Directory Groups 596
Avoid Granting Individual User Permissions 596
Use Inheritance 596
Tools 597
Command-Line Tools 597
Summary 597
CHAPTER 23: MONITORING SERVER HEALTH
AND PERFORMANCE 599
System Health 600
SQL Server 601
Dynamic Management Views (DMV) 601
Currently Running Processes 602
SQL Wait Types 607
Storage Health 608
Memory Contention 609
Team Foundation Server 610
Command Log 610
Active Server Requests 612
Performance Counters 614
Server Tracing 615
xxiii
CONTENTS
Client Performance Tracing 616
Job History 618
Storage Usage 619
Data Warehouse 621
Tools 621
Performance Analysis of Logs (PAL) Tool 622
Team Foundation Server Best Practices Analyzer (BPA) 623
Team Foundation Server Management Pack for
System Center Operations Manager (SCOM) 624
Summary 625
CHAPTER 24: TESTING AND LAB MANAGEMENT 627
Software Testing 628
Test Case Management 629
Lab Management 629
Testing Architecture 630
Microsoft Test Manager 632
Test Plans 633
Test Suites 634
Test Cases 634
Test Runs 634
Exploratory Testing 636
Actionable Bugs 636
Test Settings 636
Test Attachments Cleaner 638
Assigning a Build to a Test Plan 639
Analyzing Impacted Tests 640
Build Retention 640
Custom Work Item Types 641Test Automation 641Visual Studio Lab Management 643
What's New for Lab Management in
Team Foundation Server 2012 644
Installing and Configuring Lab Management 645
Maintaining a Healthy Test Lab 652
Troubleshooting 655
Summary 656
CONTENTS
CHAPTER 25: UPGRADING FROM EARLIER VERSIONS 657
Overview 658
In-Place Upgrades Versus Migrating to
New Hardware 658
Planning Upgrades 660
Upgrading Prerequisites 661
SQL Server 662
SharePoint 662
Project Server 663
System Center 663
Using the Configuration Utility 663
Upgrade Wizard 664
Verification of Upgrade 665
Upgrading Legacy Team Projects 666
Feature Enablement 667
Allowing Access to Premium Features 669
Automated Builds 670
Enable Local Workspaces 672
Deploying New Reports 672
Deploying New SharePoint Team Portal Site 672
Upgrading Lab Management Environments 673
Summary 674
CHAPTER 26: WORKING WITH GEOGRAPHICALLY
DISTRIBUTED TEAMS 675
Identifying the Challenges 676
Latency Over the Wide Area Network (WAN) 676
Sources of Network Traffic 677
Solutions 679
Central Server with Remote Proxy Servers 679
Multiple Distributed Servers 679
Mirroring 680
Remote Desktops 680
Internet-connected "Extranet" Server 680
Metadata Filtering 680
Build Servers 681
XXV
CONTENTS
Local Build Server Farm 681
Remote Build Server Farm 681
Team Foundation Server Proxy 682
How the Team Foundation Server Proxy Works 682
Compatibility 682
Configuring Proxies 682
Seeding Proxies 685
Personal Proxies 685
Mirroring with the Team Foundation
Server Integration Tools 686
Capabilities 686
Examples 688
Working Offline 689
Version Control 689
Forcing Offline 690
Work Items 691
Other Considerations 692
Maintenance Windows and Time Zones 692
Online Index Operations with SQL Server Enterprise 693
Distributed Application Tiers 693
SQL Mirroring 694
Summary 694
CHAPTER 27: EXTENDING TEAM FOUNDATION SERVER 695
Extensibility Points 696
.NET Client Object Model 697
Connecting to the Server 698
Handling Multiple API Versions 699
Distributing the Client Object Model 701
SOAP Event Subscriptions 701
Available Event Types 702
Building an Endpoint 703
Adding the Subscription 704
Listing All Event Subscriptionsl 705
Server Object Model 705
Server Extensibility Interfaces 705
Server Plug-Ins 708
Visual Studio Extensibility 721
Other Resources 723
Summary 724
INDEX 725
xxvi
Top Related