Comparison: Perforce and Microsoft Team Foundation Server (TFS)
←
→
Page content transcription
If your browser does not render page correctly, please read the page content below
Comparison: Perforce and Microsoft Team Foundation Server (TFS) Perforce 2012.1 and Microsoft Team Foundation Server (TFS) 2012 This document compares Perforce (version 2012.1) with Microsoft TFS (version 2012). Read this comparison to: • Understand Perforce and TFS’s major feature differences • Explore differences in architecture, administration, and scalability • See where Perforce and TFS can work together
Table of Contents Executive Summary________________________________________________________________ 1 Overview_________________________________________________________________________ 1 Branching, Merging, and Release Management_______________________________________ 2 TFS __________________________________________________________________________ 2 Basic Branching and Merging________________________________________________ 2 Inefficient Merges Lead to Conflicts___________________________________________ 2 Ignored Merge History Loses Data____________________________________________ 2 Indirect Merging Not Supported in TFS________________________________________ 4 Branching Model and Guidance______________________________________________ 4 Perforce______________________________________________________________________ 5 Basic Branching and Merging________________________________________________ 5 Branching Model and Guidance______________________________________________ 5 Workspace Management___________________________________________________________ 6 TFS __________________________________________________________________________ 6 Perforce ______________________________________________________________________ 6 Visual Tools_______________________________________________________________________ 6 TFS __________________________________________________________________________ 6 Perforce ______________________________________________________________________ 6 Integration with Related Tools______________________________________________________ 8 TFS __________________________________________________________________________ 8 Administration and Support________________________________________________________ 9 TFS __________________________________________________________________________ 9 Distributed Development and DVCS Support________________________________________ 10 TFS _________________________________________________________________________ 10 Perforce_____________________________________________________________________ 10 Scalability and Performance_______________________________________________________ 10 TFS _________________________________________________________________________ 10 Perforce_____________________________________________________________________ 10 Learn More______________________________________________________________________ 11 Evaluating Perforce___________________________________________________________ 11 Scheduling a Demo of Perforce_________________________________________________ 11 Migrating to Perforce__________________________________________________________ 11 Comparison: Perforce and Microsoft Team Foundation Server (TFS)
EXECUTIVE SUMMARY The choice of software version management system profoundly This document compares Perforce (version 2012.1) with affects those involved in digital asset management, from software Microsoft Team Foundation Server (version 2012), contrasting developers to artists to managers. An effective software version major feature differences and exploring system architecture, management system is one that: administration, and scalability. For those using TFS as a work item • Provides a full history of the evolution of digital assets (issue) management system, a method of integrating Perforce software version managment with TFS work items is explored. • Enables parallel development and concurrent team activity • Helps the entire team work more efficiently The analysis in this paper suggests that Perforce is a more productive and robust software version management system • Meets modern development and scalability challenges with significant advantages in scalability and total cost of • Offers fast, flexible, and reliable service ownership. Perforce handles basic and advanced software version While Microsoft Team Foundation Server (TFS) has several management operations more reliably, provides innovative tools, other Application Lifecycle Management (ALM) components, is simpler to install and scale, and does not dictate workflow and including task tracking and build management, this paper will tool selection. concentrate on the versioning component of TFS. OVERVIEW Usability and Collaboration Attribute Team Foundation Server (TFS) Perforce Branching, Merging, and TFS offers basic branching and merging. TFS’s Perforce automatically tracks the history of all Release Management lack of support for advanced merging hampers branch operations with its advanced merge tracking productivity. Branching framework and release mechanisms. Streams provide best-practices model mostly designated by convention. branching framework. Granular triggers and broker available for guidance. Workspace Management Changelists are not created until work is submitted. Changelists can be used to organize work in a Workspace views are simple 1:1 mappings. workspace. Workspace views allow more flexible selection of working files. Visual Tools TFS clients available in Visual Studio, Eclipse, and a Full-featured multiplatform standalone visual web client. A simple branch graph is provided. client available, as well as fully supported integrations for Visual Studio and Eclipse. Third-party integrations support several other IDEs. Visualization tools include Stream Graph, MergeQuest, Revision Graph, Time-lapse View, and more. Integration with Related Tools TFS includes several Application Lifecycle Perforce follows a best-of-breed approach and Management (ALM) components. Integrations offers fully supported integrations with leading are available from third parties. APIs available for defect tracking and build tools, including TFS work .NET, Java, and web services.. items. Integration tools include the Defect Tracking Gateway and several Perforce APIs. Third-party integrations are also available for tools in many other categories. Comparison: Perforce and Microsoft Team Foundation Server (TFS) 1
Administration and Scalability Attribute Team Foundation Server (TFS) Perforce Administration and Support Supported by Microsoft. Administration requires World-class technical support, training, and knowledge of several components including professional services provided by Perforce. Simple TFS, SQL Server, IIS, and SharePoint. All and consistent deployment results in lower server components are Windows only. Upgrade administration costs. Excellent multiplatform procedures can be complex. support. Simple upgrade procedures with good interoperability across versions. Remote Development Proxy servers cache file content at remote sites. Perforce Git Fusion provides seamless collaboration Local workspaces allow some operations to be for Git users. Proxy and replication services offer performed while disconnected. file and data caching solutions for remote sites for several scenarios. Scalability and Performance Scaling TFS may require a complex topology with Perforce scales up to many terabytes and tens of multiple clustered data and application tiers. The millions of versioned files. Perforce is currently data tier can be partitioned across sites, but no deployed in environments with 10,000+ users and replication is available. heavy automation. Proxies, Brokers, Replication Services, and Git Fusion provide powerful and flexible deployment architectures. BRANCHING, MERGING, AND edits were made on both branches, and some changes from the child branch (DEV) were merged back (into MAIN). In Step 7, RELEASE MANAGEMENT we try to merge the latest changes from the parent (MAIN) to the child (DEV). TFS does not properly consider prior merge credit TFS from Step 5, leading to an unnecessary merge conflict. Although TFS does not report the selected base, it is most likely selecting Basic Branching and Merging the wrong base for the merge. Although TFS offers basic branching and merging, its merge Ignored Merge History Loses Data algorithms do not support common merge scenarios such as indirect merges, and sometimes create merge problems. The TFS’s merge engine also causes data loss by failing lack of advanced merge support can decrease productivity, as to properly consider prior merge history. Consider developers waste time fixing merge problems and adjusting their the scenario illustrated in Figure 2. workflows to work around the limitations. Similarly, uncertainty In this scenario, a file was branched immediately after creation. about merging results will slow the adoption of automated release A change was made to the file in the parent branch (MAIN) and management processes. merged into the child branch (DEV), but the change was ignored. A change was then made on the child branch. When merging this Inefficient Merges Lead to Conflicts change back to the parent in Step 6, TFS overwrites the first line As a simple example of a case where TFS merging does not work of the file. In reality, the only unique change on the child branch properly, consider the scenario illustrated in Figure 1. In this was the introduction of the new line at the end of the file, so scenario, a file was branched immediately after creation, several removing the edit on the first line is unexpected. 2 Comparison: Perforce and Microsoft Team Foundation Server (TFS)
1: edit STEP 4 STEP 6 1 --- > .merge- 2: 2: foo 2: bar right 2 ---- 2 ---- 2 ---- 2: ---- Rev 1 Rev 2 Rev 3 Rev 4 DEV STEP 2 STEP 5 STEP 7 MAIN 1: 1: edit 1: edit 1 ---- 1 ---- 1 ---- 2: 2: 2: foo 2 ---- 2 ---- 2 ---- Rev 1 Rev 2 Rev 3 STEP 1 STEP 3 Figure 1: A simple merge scenario in which TFS causes a merge conflict. 1: 1 ---- 1: 1: 2: 1 ---- 1 ---- 2 ---- 2: 2: 3: 2 ---- 2 ---- 3 ---- 3: 3: 4: new line 3 ---- 3 ---- 4 ---- Rev 1 Rev 2 Rev 3 DEV STEP 5 re STEP 2 STEP 4 STEP 6 no Ig MAIN 1: 1: edit 1: 1 ---- 1 ---- 1 ---- 2: 2: 2: 2 ---- 2 ---- 2 ---- 3: 3: 3: 3 ---- 3 ---- 3 ---- 4: new line Rev 1 Rev 2 4 ---- Rev 3 STEP 1 STEP 3 Figure 2: A merge scenario in which TFS causes data loss due to ignoring merge history. Comparison: Perforce and Microsoft Team Foundation Server (TFS) 3
STEP 2 STEP 3 branch edit DEV A Merge to parent: ok MAIN STEP 1 Merge to edit sibling fails DEV B STEP 2 STEP 4 branch edit Figure 3: TFS cannot handle indirect merges. Indirect Merging Not Supported in TFS TFS lacks some of the usual tools to guide a custom workflow for branching and release management tasks, such as hooks Indirect merging (merging between sibling branches) is common or triggers that respond to SCM events. TFS does have some in advanced environments. Although not a best practice, indirect workflow capabilities in its other components. For example, the merging is sometimes necessary to quickly propagate a bug TFS build system can enforce a policy that prevents check-ins fix between indirectly related branches. Indirect merging also unless the code builds successfully. TFS also has an event system provides flexibility for moving work from one task branch to that can be used for post-processing of SCM events, such as email another. notifications of check-ins. TFS does not support indirect merging. Attempting a merge between sibling branches gives an error, as shown in Figure 3. Indirect merging can be forced using the baseless option, but that ignores prior indirect merge history, greatly increasing the chances of merge conflicts. Branching Model and Guidance Development and release management models are built by convention, usually using a known directory structure for different branch types. Branch graph visualization is available in TFS as shown in Figure 4, but it does not indicate the relative stability of different branches or the intended merge pathways. For instance, there is no indication that the rel-1.0 branch is more stable than the my-task branch, and no indication whether the rel-1.0 branch should accept a change from its parent. Also, no visual indicator exists when merges are pending between Figure 4: TFS Branch Graph showing the branch hierarchy for the Jam project. branches. 4 Comparison: Perforce and Microsoft Team Foundation Server (TFS)
Perforce In the three merging scenarios described earlier, Perforce performs the merges correctly: Basic Branching and Merging • In the scenario described in Figure 1, Perforce selects the The Perforce Inter-File Branching model is powerful and flexible, correct base which results in a merge with no conflicts. capable of branching thousands of files rapidly while retaining • In the scenario described in Figure 2, Perforce correctly a complete branch and merge history (including the method of considers prior merge history and merges cleanly. resolving merges). Instead of manually tracking all changes across • In the scenario described in Figure 3, Perforce is able to branches, users can rely upon Perforce to merge file changes seamlessly merge between the sibling branches using the across multiple branches automatically with fewer conflicts to indirect merge history. resolve. This enables a variety of development scenarios such as client-specific versions, experimental branches, personal or task Branching Model and Guidance branches, and the classic release branching patterns. A built-in Perforce Streams provide a lightweight but powerful branching graphical tool, Revision Graph, displays the detailed branching model. Using streams, a product architect defines the relationship history of each file for easy visualization of code propagation. between streams, the modules that compose a product, and the Perforce’s merge engine is both robust and flexible. direction of change (merges) between streams. This information The most complex merge scenarios are supported, including simplifies and automates many routine user operations. refactoring, indirect merges, and handling non-content changes. When using either streams or regular branching, Perforce offers Because of this robustness, automation can confidently be several tools to guide and enforce policy. Triggers and access incorporated into most branching and release management control are granular, while the Perforce Broker provides command workflows. filtering. Figure 5: Perforce Revision Graph. rel2.1 rel2.2 rel2.3 main dev2.3 Figure 6: Perforce Stream Graph. Comparison: Perforce and Microsoft Team Foundation Server (TFS) 5
WORKSPACE MANAGEMENT Users can create pending changelists to effectively organize work on several tasks in a workspace. This simple feature helps users avoid submitting unrelated files by mistake. TFS TFS workspaces consist of simple 1:1 mappings between repository directories and the local file system. New workspaces VISUAL TOOLS can be created using an existing workspace as a template. TFS TFS’s changesets are roughly equivalent to Perforce changelists, TFS’s visual tools are available in Visual Studio and Eclipse. representing atomic units of work and sync points in the Besides the Branch Graph (Figure 4), TFS provides other repository. However, TFS does not allow the creation of pending techniques for displaying the branching history of a changeset changesets to organize work. Changesets cannot be created until (Figures 8 and 9). However, these tools do not show the full check-in (Shelvesets can be used to shelve pending work, but lifecycle of a file like Perforce’s Revision Graph (Figure 6). submitting a shelveset checks in the file content as stored in the shelf). Perforce Perforce P4V, Perforce’s multiplatform visual application, provides consistent visual tools for all major platforms that are generally Perforce workspaces are flexible and granular, allowing the more feature-rich than their TFS equivalents. For instance, selection, exclusion, or remapping of files. For example, a Perforce Perforce’s annotation tool includes lifecycle indicators and can workspace could exclude all build artifacts (files with a .obj show a subset of file history. extension) and move region-specific translation files to a different folder for localized builds. Innovative visualizations including the Stream Graph and HTML5 applets enhance productivity. Besides P4V, fully Perforce workspaces can be generated automatically when supported integrations are available for Visual Studio and Eclipse. working with streams, allowing team leads to ensure all Third-party integrations support several other IDEs. developers use the correct set of files. Users can also create Perforce workspaces manually or use existing workspaces as templates. Repository View Mapping Workspace Source code Source code Build artifacts Build artifacts not required English translations Local translation Japanese translations Figure 7: A flexible workspace view in Perforce. 6 Comparison: Perforce and Microsoft Team Foundation Server (TFS)
Figure 8: Branch history of a changeset (hierarchy) in TFS. Figure 9: Branch history of a changeset (timeline) in TFS. Figure 10: TFS Time Lapse View. Figure 11: Perforce Time-lapse View. Comparison: Perforce and Microsoft Team Foundation Server (TFS) 7
INTEGRATION WITH RELATED TOOLS TFS and Perforce follow radically different philosophies in this area. TFS, as part of the Visual Studio Team System, provides a largely monolithic ALM package. Perforce practices a best-of-breed strategy, providing the best versioning solution possible and integrating with powerful tools in other categories. TFS Perforce TFS includes other ALM components, including a build Perforce uses a best-of-breed approach, providing powerful management system, test agents, reporting, and SharePoint for software version managment and integrating with leading tools in collaboration portals. Indeed, every new TFS project requires the other categories. Although using a single solution for ALM may selection of a process template. seem simpler, preselecting one tool that works well for all teams proves challenging. Assembling an ALM package from best- TFS integrates with Microsoft Excel and Project for work item of-breed products provides the flexibility to change and adapt tracking. Custom tools provide basic check-in/checkout features processes over time. in other Microsoft Office products. For example, a site using Visual Studio for some development Third-party integrations are available for non-Microsoft tools. efforts may choose to use TFS work items and project TFS provides APIs for the .NET environment, Java, and web management. As the public project in Assembla shows services. (assembla.com/spaces/tfs-perforce-work-item-sync/wiki), Perforce jobs can be linked to TFS work items, providing the link between checkins and work items. Other parts of the company using other ALM tools can integrate with Perforce as well. Integration tools include the Defect Tracking Gateway and fully supported APIs for C/C++, Perl, Python, Ruby, PHP , Java, iOS, and Android. Perforce also integrates with popular applications in several categories including: • IDEs • Web and graphical tools • Software build tools • Microsoft Office (versioning for Word, Excel, PowerPoint, and Project files) • Merge and diff tools 8 Comparison: Perforce and Microsoft Team Foundation Server (TFS)
ADMINISTRATION AND SUPPORT Installing and administering a Perforce Shared Versioning Service is significantly simpler than TFS, resulting in a lower total cost of ownership. TFS Perforce TFS is a complex application with several components.1 A Perforce imposes minimal administrative overhead. Perforce TFS instance includes SQL Server, IIS, and TFS itself, and deployment is simple and consistent. Working in a multiplatform may include SharePoint and other modules. Architecturally, environment poses no problem, and Perforce has excellent TFS is minimally divided into data and application tiers with support for mixed services and application versions. Upgrade several databases and optional SharePoint and reporting tiers. procedures are simple and fast, often requiring nothing but Depending on deployment size, TFS may run on one to several replacing the service binary and running a single upgrade servers. The requirement for product components distributed command. over multiple servers adds to the training, maintenance, and Scaling out a Perforce deployment requires very little diagnostic responsibilities of system administrators. additional expertise. Proxy services and brokers require little Installing and maintaining TFS requires expertise in all the maintenance, while Git Fusion requires no extra software or components and a considerable investment in planning the process for developers. Replication services require a small set of deployment architecture. Backup and recovery procedures configuration changes, but are otherwise identical to a regular must be implemented and tested for each tier and component. Perforce service. The Perforce service runs on all major platforms. Upgrades may be complex and time-consuming; for instance, Expert and responsive technical support is a hallmark of Perforce, upgrading the application tier usually involves uninstalling the and full technical support is included during an evaluation. old version of TFS and then installing the new version. Because support is better experienced than described, Perforce Scaling out a TFS deployment requires expertise in several areas, encourages prospective customers to judge for themselves during including SQL Server, IIS, SharePoint, hardware and network a 45-day trial. load balancing, and clustering. Perforce also offers a full range of training and professional The TFS server runs only on Windows, although clients are services. Perforce provides technical support for past releases for available for other platforms. TFS is supported an extended duration, and has a defined policy that provides 12 by Microsoft. months’ minimum notice before an older product is retired. 1 http://msdn.microsoft.com/en-us/library/ms252473.aspx Comparison: Perforce and Microsoft Team Foundation Server (TFS) 9
DISTRIBUTED DEVELOPMENT SCALABILITY AND AND DVCS SUPPORT PERFORMANCE TFS TFS TFS offers simple proxy services that cache file contents to Scaling TFS to support a large user base, distributed work, or support remote sites or build farms. TFS 2012 introduced local heavy data volume can be a daunting task. Examples of scaled-out workspaces, which cache enough information in a workspace to TFS deployments include multiple application and data tiers, allow commands like ‘diff’ and ‘status’ to run without a server each running in clusters, with several independent data tiers for connection. Local workspaces support the modify-merge-commit different sites.2 workflow. However, local workspaces are not truly independent: Despite the complexity of a TFS deployment, simple data they do not support private local branching or even committing replication is not supported. while disconnected. Perforce Perforce Perforce is built primarily for speed. Perforce scales linearly, Distributed development with Perforce is supported by several so there is no performance penalty imposed by the number of tools. These tools are typically transparent to the end user. revisions or the size of any given file(s). The Perforce Versioning Git Fusion allows seamless collaboration on the same data for Service has been deployed successfully in environments with developers working either in Git or Perforce. Git developers enjoy several thousand users, terabytes of versioned content, and Perforce as a master repository with Git’s distributed features. millions of revisions. Perforce’s deployment architecture includes proxies, brokers, replicas and Git Fusion, and these tools can be Perforce proxies at remote locations support Perforce’s distributed tailored to satisfy demanding environments. architecture. The Perforce Proxy Service caches and serves files to users at remote locations, reducing traffic across slower WAN Replication Services are particularly useful for supporting links. All users, local or remote, connect to the same central depot automated processes such as aggressive continuous integration; and look at the same project files. The Perforce Proxy Service the performance burden of such processes is shifted entirely away requires minimal administrative attention. from the Shared Versioning Service. Perforce Replication Services support automated build processes, Tools available for scaling out a Perforce deployment require very simple disaster recovery, and the read-only activity of end users little extra configuration in comparison to similar efforts in TFS. at any site. Using replicas provides significant performance 2 http://msdn.microsoft.com/en-us/library/ms400682.aspx improvements. Proxy Service Shared Versioning Service P4Sandbox Replication P4Sandbox Service Figure 12: Perforce’s distributed architecture. 10 Comparison: Perforce and Microsoft Team Foundation Server (TFS)
LEARN MORE Evaluating Perforce Scheduling a Demo of Perforce More than 400,000 users at 5,500 companies rely on Perforce for To learn more about Perforce, schedule an interactive demo enterprise version management. Perforce encourages prospective tailored to your requirements: customers to judge for themselves during a typical 45-day perforce.com/product/demos trial evaluation. Free technical support is included with your evaluation. Get started: perforce.com/trial Migrating to Perforce Once you have downloaded Perforce, learn more about our Visual Studio integrations: Perforce Consulting Services has experience assisting customers with migrations from various software version management Learn more about P4VS, the Perforce Plug-in for Visual Studio, a systems. For more information, visit: fully-compliant Visual Studio plug-in with one-stop access to all perforce.com/consulting of the tools you need. Visit the VSIP gallery: http://goo.gl/twQII Try the Perforce and TFS Work Item Integration: assembla.com/spaces/tfs-perforce-work-item-sync/wiki Comparison: Perforce and Microsoft Team Foundation Server (TFS) 11
perforce.com North America Europe Australia Perforce Software Inc. Perforce Software UK Ltd. Perforce Software Pty. Ltd. 2320 Blanding Ave West Forest Gate Suite 3, Level 10 Alameda, CA 94501 Wellington Road 221 Miller Street USA Wokingham North Sydney Phone: +1 510.864.7400 Berkshire RG40 2AT NSW 2060 info@perforce.com UK AUSTRALIA Phone: +44 (0) 845 345 0116 Phone: +61 (0)2 8912-4600 uk@perforce.com au@perforce.com Copyright © 2012 Perforce Software Inc. All rights reserved. All trademarks or registered trademarks used herein are property of their respective owners.
You can also read