【ACCESS精品源码栏目提醒】:以下是网学会员为您推荐的ACCESS精品源码-【精品】TFSGuide-part3 - 小学课件,希望本篇文章对您学习有所帮助。
使用 Visual Studio Team Foundation Server 进行 团队开发本书共分四部分,此为第三部分包括报告团队生成、报告源代码管理、
报告报告和报告项目管理等四个实践内容问题与解答:Team Foundation Server 源代码管理和版本化索引使用版本控制 什么是 MSSCCI 供应者?应在何时使用? 还有哪些其他 IDE 支持 TFS? 我应在何时使用 Team Foundation Server Power Tool? 最常见的版本控制可扩展性方案是什么? 如何通过命令行使用版本控制?管理 如何针对已继承权限的文件夹内的一个文件授予权限? 如果一名开发人员离开项目,我应该怎么做? 如何管理我并不信任其执行的签入操作的实习人员或其他开发人员? 在应用程序发布后,我应如何修改权限?分支/标签/合并 我应在何时使用标签? TFS 标签与 VSS 标签有什么不同? 什么是分支? 应在何时考虑分支? 不分支的原因有哪些? 如何使用分支来发布我的应用程序? 如何使用分支来维护我的应用程序? 如何使用分支来减少团队间的冲突? 如何使用分支来减少功能间的冲突? 关于分支和合并,已经证明的实践有哪些? 分支与标签间的区别是什么? 什么是“路径空间”分支模型? TFS 促进模型的工作原理是什么? 我该如何合并两个分支? 能否跨团队项目进行合并? 什么是 baseless 合并? 什么是代码促进模型? 分支的逻辑与物理视图间的区别是什么? 如果我使用代码促进模型,应选择怎样的合并频率?签入策略 什么是变更集? 什么是签入策略? 重写签入策略的时机和方法如何? 如何实施策略? 如何使用签入验证系统? 如果我修改了文件名称或删除了磁盘上的文件,版本控制会发生不同步
问题吗? 自动冲突解决的工作原理是什么? 如何手动解决冲突? 如何避免冲突?签出、获取和锁定 如何找到最后修改一个文件的开发人员是谁? Get 命令的工作原理是什么? 共享和独占签出有什么区别? 我应在何时使用 lock 命令? TFS 支持哪些锁定类型?分布式 / 远程开发 如何脱机工作? 如何为分布式团队开发而优化? 什么是 TFS 版本控制代理? 如何优化 TFS 版本控制代理性能?迁移 TFS 版本控制与 VSS 有何不同? 签出模型与 VSS 有何不同? 我应如何将源代码从 VSS 迁移到 TFS? 我应如何将源代码从其他版本控制
系统迁移出来?项目/工作区管理 我应如何组织团队项目? 我应如何管理项目间的依赖项? 什么是工作区? 我该如何使用工作区来分隔开发人员? 对于工作区映射,已经证明的实践有哪些? 关于管理共享组件和代码,已有哪些成熟实践? 我应在何时创建新团队项目?何时创建新分支? 我应如何管理跨多个项目共享的源代码? 我应如何管理跨多个项目共享的二进制文件? 我应如何组织源代码树?搁置 什么是搁置? 什么是搁置集? 一般应在何时使用搁置? 如何使用搁置来备份工作? 为什么要取消搁置一个搁置集?使用版本控制 什么是 MSSCCI 供应者?应在何时使用? 还有哪些其他 IDE 支持 TFS? 我应在何时使用 Team Foundation Server Power Tool? 最常见的版本控制可扩展性方案是什么? 如何通过命令行使用版本控制?什么是 MSSCCI 供应者?应在何时使用?Microsoft 源代码管理界面(MSSCCI)供应者用于为那些不支持 Microsoft Visual Studio Team 资源管理器的产品提供集成的版本控制用户体验。
例如,如果用户正在使用 Visual Studio 6.0,则可以使用 MSSCCI 客户机或命令行来与 Microsoft Visual Studio Team System VSTS Team Foundation版本控制进行交互。
以下客户机可以通过使用 MSSCCI 供应者直接使用Team Foundation 版本控制。
Microsoft Visual Studio .
NET 2003 Microsoft Visual C 6 Service Pack 6 SP6 Microsoft Visual Basic 6.0 SP6 Microsoft Visual FoxPro 9.0 SP1 Microsoft
Access 2003 SP2 Microsoft SQL Server Management Studio Sparx Systems Enterprise Architect 6.1 Sybase PowerBuilder 105 Toad for SQL Server 2.0MSSCCI 供应者在以下方面与Visual Studio 2005 中的 Team Foundation 版本控制具有不同的行为: 检出也执行 GetLatest 操作。
为签出应用独占的签入锁。
“从源代码管理打开”和“保存到源代码管理”菜单类似于 Microsoft Visual SourceSafe。
其他资源 要在 Microsoft MSDN 上阅读关于 MSSCCI 的更多信息,请参见“Microsoft 源代码管理界 面”,地址为: http://msdn.microsoft.com/library/default.aspurl/library/en-us/vcug98/html/_asug_the_microsoft_so urce_code_control_interface.asp 要了解关于 MSSCCI 供应者的更多信息,请参见“TFS MSSCCI 供应者上的更新”,地址为: http://blogs.msdn.com/bharry/archive/2006/03/24/559876.aspx MSSCCI 插件用 TFS Power Tool 开发的, 但不受 Microsoft 的官方支持。
要从 MSDN 下载工 具,请访问: http://www.microsoft.com/downloads/details.aspxFamilyId87E1FFBD-A484-4C3A-8776-D560AB 1E6198ampdisplaylangen还有哪些其他 IDE 支持 TFS?Team Foundation Server 可以从安装了 Team Explorer 的 Visual Studio 2005 的任何版本使用。
用户也可以同时运行不带有 Visual Studio 2005 集成开发环境的 Team Explorer,以便使用团队项目和管理工作项。
以下客户端具有其他厂商提供的集成解决
方案: Eclipse Linux 客户端 Apple Macintosh 客户端 Hypertext Markup Language
HTML Web 客户端如果用户希望从 Eclipse IDE、Linux 或 Macintosh 客户端访问Team Foundation 版本控制,可考虑安装客户端应用程序的 Teamprise 套件,下载地址为:http://www.teamprise.com/如果用户希望从 Web 对 Team Foundation 版本控制 进行只读访问, 可考虑安装 Team System WebAccess,下载地址为:http://msdn2.microsoft.com/en-us/teamsystem/bb676728.aspx其他资源 关于使用 Team Explorer 的更多信息,请参见“使用较老的 Visual Studio Projects 或其他代码 项目”,地址为:http://msdn2.microsoft.com/en-us/library/ms242912vs.80.aspx 关于 Teamprise 的更多信息,请参见 http://www.teamprise.com 关于 Team System Web
Access 的更多信息,请参见: http://msdn2.microsoft.com/en-us/teamsystem/bb676728.aspx我应在何时使用 Team Foundation Server Power Tool?Team Foundation Power Tool(TFPT)提供了 Visual Studio 2005 用户界面(UI)没有的版本控制功能。
例如,用户可以使用 TFPT 来帮助支持联机工作,或执行回滚操作以撤消变更集的签入。
如果需要执行以下任何操作,可考虑使用 TFPT: 搁置 – TFS 所支持的搁置操作不允许将搁置的变更和本地变更合并到一起。
当使用 TFPT 来 搁置来自变更集的变更时,如果本地工作区中的项具有挂起的更改(作为一项编辑),并且搁 置的更改也是一项编辑,则 TFPT 可以通过执行三路合并操作来合并更改。
回滚 – TFS 不直接支持撤消变更集签入的能力。
通过使用 TFPT rollback 命令,可以尝试在指 定变更集中所做的任何更改。
不是所有更改均可被回滚,但大多数情况下都可以进行回滚。
脱机工作 – TFPT 联机工具提供了用于通知服务器用户所做的本地更改的功能,从而允许用户 在一段时间内不连接到服务器也可以工作。
获取变更集 – TFPT GetCS 命令允许用户基于给定变更集版本获取变更集中列出的所有项。
这 在以下情况下很有用:某同事签入了一项更改,此更改需要包含在你的
工作区中,但你无法将 整个工作区更新到最新版本。
移除挂起的编辑 – TFPT UU(撤消未更改的)命令从实际尚未完成编辑的文件中移除挂起的 编辑。
这在以下情况下很有用:签出大量要编辑的文件,但实际上只对一小部分文件做了更改。
用户可以通过运行 TFPT UU 命令收回对未更改的文件的编辑,此命令将本地工作区中的文件 的哈希表与服务器上的哈希表进行比较,以确定文件是否实际上被编辑。
在命令行中键入 Tfpt.exe 即可运行此命令。
其他资源 要下载 TFPT,请访问: http://www.microsoft.com/downloads/details.aspxFamilyID7324c3db-658d-441b-8522-689c557d0 a79ampDisplayLangen 要查看关于 TFPT 的论坛讨论,请访问: http://forums.microsoft.com/MSDN/ShowForum.aspxForumID930ampSiteID1最常见的版本控制可扩展性方案是什么?最常见版本控制可扩展性方案是定制签入策略以便在签入时实施标准。
要创建自定义策略插件(这些插件出现在“添加签入策略”对话框中),使用Visual Studio Team Foundation Server
软件开发工具包(SDK)所提供的扩展功能。
TFS SDK 的下载地址为http://go.microsoft.com/fwlink/linkid68586。
虽然不是很
常用,但我们也可以编写一个集成层(integration layer),以允许非Visual Studio 2005 客户端使用 Team Foundation 版本控制。
其他资源 要了解如何自定义签入策略,请参见“演练:自定义签入策略和签入说明”,地址为: http://msdn2.microsoft.com/en-us/library/ms181281VS.80.aspx 要查看拒绝签入的选定模式的示例代码,请参见“拒绝某些模式的签入策略”,地址为: http://blogs.msdn.com/jmanning/archive/2006/02/02/523125.aspx 要查看对签入实施注释的示例代码,请参见“示例签入策略:确保注释非空”,地址为: http://blogs.msdn.com/jmanning/archive/2006/01/21/515858.aspx 要了解如何
注册新签入策略,请参见“我创建了一条新的签入策略!如何添加?”,地址为: http://blogs.msdn.com/jmanning/archive/2006/02/07/526778.aspx 要下载 TFS SDK,请访问:http://go.microsoft.com/fwlink/linkid68586 要进一步了解 Team Foundation 版本控制 可扩展性,请参见“演练:版本控制对象模型”,地 址为:http://msdn2.microsoft.com/en-us/library/bb187335VS.80.aspx如何通过命令行使用版本控制?Team Foundation Server 提供了 TF 命令行工具(Tf.exe),以支持用户执行
源代码管理操作。
例如,通过使用 Microsoft Windows Task Scheduler,用户可以用命令行来安排操作。
为了确保设置正确的路径和其他环境变量,可从 Visual Studio 2005 命令提示窗口来运行工具,或运行 Vsvars32 批处理文件,正常情况下批处理文件位于 DriveLetter:Program FilesMicrosoft VisualStudio 8Common7Tools。
命令行支持大多数源代码管理命令,包括 Checkin、Checkout、Get、History、Shelve、Branch、Merge、Label、Status、Undelete 和 Undo。
以下是一些可能需要通过命令行执行的操作: 将文件从服务器同步到本地计算机上 – tf get 向服务器添加一个文件 – tf add 签出一个文件以便进行编辑 – tf checkout 签入挂起的更改 – tf checkin 从服务器检索特定变更集 – tf get /version以下操作只能通过命令行执行: 删除另一个用户的工作区 – tf workspace /delete 撤销另一个用户的签入 – tf undo 取消另一个用户的锁定 – tf lock 定义标签范围 – tf label 执行 baseless 合并 – tf merge其他资源 关于使用 Tf.exe 命令的更多信息,请参见:“演练:通过命令行使用 Team Foundation 源代码 管理”,地址为:http://msdn2.microsoft.com/en-us/library/zthc5x3f.aspx 关于只能通过命令行执行的命令的更多信息,请参见“只能通过命令行执行的操作(Team Foundation 源代码管理)”,地址为: http://msdn2.microsoft.com/en-us/library/ms194957VS.80.aspx管理 如何针对已继承权限的文件夹内的一个文件授予权限? 如果一名开发人员离开项目,我应该怎么做? 如何管理我并不信任其执行的签入操作的实习人员或其他开发人员? 在应用程序发布后,我应如何修改权限?如何针对已继承权限的文件夹内的一个文件授予权限?在源代码管理资源管理器中右击文件夹或文件来设置权限,单击“属性”,然后在“安全”选项卡上选择要更改权限的用户或组,再编辑“权限”下面列出的权限。
也可以在命令行设置这些权限,方法是使用 TF 命令行实用工具的 Per
mission 命令。
Team Foundation 源代码管理允许用户为 Windows 组、Windows 用户和 Team Foundation 组授予访问控制权限。
权限可以从包含的文件夹继承,也可以显式地声明权限。
权限的设置有两种形式:允许或拒绝。
拒绝通常覆盖授权,即使拒绝是继承的而授权是显式定义的。
继承的授权与显式的许可相结合,共同决定了用户或组在工作项上的有效权限。
由于“拒绝”通常覆盖“允许”,因此用户可以保持打开继承而拒绝签入,例如:注意,当关闭继承时,例如,用户应该首先设置所需的显式权限并确保在关闭继承前先分配特定于自己帐户的权限。
如果在关闭继承时未设置所需的权限,则可以将自己锁定在文件或文件夹之外,并要求 TFS 管理员(也是应用程序层
计算机管理员)来修复授权。
应用
程序层本地管理员可以永远不将他们自己锁定到外部。
其他资源 关于权限的更多信息, 请参见 MSDN 网站上的 “Team Foundation Server 默认组、权限和角色”, 地址为:http://msdn2.microsoft.com/en-us/library/ms253077.aspx 关于权限的更多信息,请参见 MSDN 上的“源代码管理安全权限”。
地址为: http://msdn2.microsoft.com/en-us/library/ms181761.aspx如果一名开发人员离开项目,我应该怎么做?如果一名开发人员离开了您的项目,应确保删除其工作区。
此操作也删除该开发人员的任何挂起的更改,并撤消他所保持的任何锁定。
注意:如果团队项目开启了独占锁,则不能在未撤消更改的情况下撤消锁定。
要找到该开发人员锁定了哪些文件,可运行如下命令: tf workspaces /owner:domaindevuser /computer: /server:servername要删除工作区和删除锁定,可运行以下命令: Tf workspace /delete workspacenamedomaindevuser /s:servername其他资源 关于在开发人员离开项目后进行清理的更多信息,请参见“如何:在用户离开时清理文件“, 地址为:http://msdn2.microsoft.com/en-us/library/ms194958VS.80.aspx 关于 Workspace 命令的更多信息,请参见“Workspace 命令”,地址为: http://msdn2.microsoft.com/en-us/library/y901w7seVS.80.aspx如何管理我并不信任其执行的签入操作的实习人员或其他开发人员?如果团队中包含不受信任的开发人员,例如新员工或实习人员,则可以拒绝这些开发人员在源树上的签入权限。
在关闭继承之前,应确保设置了全部需要的权限(包括您自己的账户的权限)。
不受信任的开发人员可以做出挂起的更改然后搁置这些更改,而不是直接签入。
有经验的开发人员可以取消这些搁置的更改,然后检查并过后再签入它们。
其他资源 关于移除权限的更多信息,请参见“如何:移除对源代码管理文件的访问权限”,地址为: http://msdn2.microsoft.com/en-us/library/ms400718VS.80.aspx-在应用程序发布后,我应如何修改权限?当分支处于维护模式时,例如已经发布后,可以关闭继承权限以便对树进行锁定。
关闭权限之后,可以允许个别的用户针对所需的 hotfixes 拥有挂起更改和签入权限。
其他资源 关于移除权限的更多信息,请参见“如何:移除对源代码管理文件的访问权限”,地址为: http://msdn2.microsoft.com/en-us/library/ms400718VS.80.aspx分支 / 标签 / 合并 我应在何时使用标签? TFS 标签与 VSS 标签有什么不同? 什么是分支? 应在何时考虑分支? 不分支的原因有哪些? 如何使用分支来发布我的应用程序? 如何使用分支来维护我的应用程序? 如何使用分支来减少团队间的冲突? 如何使用分支来减少功能间的冲突? 关于分支和合并,已经证明的实践有哪些? 分支与标签间的区别是什么? 什么是“路径空间”分支模型? TFS 促进模型的工作原理是什么? 我该如何合并两个分支? 能否跨团队项目进行合并? 什么是 baseless 合并? 什么是代码促进模型? 分支的逻辑与物理视图间的区别是什么? 如果我使用代码促进模型,应选择怎样的合并频率?我应在何时使用标签?使用标签将一组分解和文件夹组织在一起,供未来操作使用。
可以为分支、合并、区分或获取文件使用标签。
标签提供了一个可在此后执行上述操作之后时返回的记号。
Team Foundation 生成自动为它所创建的每个生成的相关文件版本加标签。
注意:如果不确定是否需要分支,可以为一组文件加标签,并在后面基于此标签创建分支。
其他资源 关于标签的更多信息,请参见“使用标签”,地址为 http://msdn2.microsoft.com/en-us/library/ms181439VS.80.aspx 关于标签的更多信息,请参见“如何:应用标签”,地址为: http://msdn2.microsoft.com/en-us/library/ms181440VS.80.aspxTFS 标签与 VSS 标签有什么不同?Team Foundation Server 标签与 VSS 标签有着显著的区别。
由于 VSS 标签是通常分配给 VSS 中所有或部分树的“point in time”标签,因此 VSS 根据时间序列以及文件历史来显示标签。
列表上任何出现在被标签文件之前的项都被包括在标签中,而无包括其后的任何项。
在 TFS 中,标签将一组源文件绑定到一起,而不是简单的“point in time”。
标签的常见用途是标记每日的生成。
这使我们能够轻松地检索对应于特定生成的源文件集,例如,需要需要应用某个修复。
其他资源 关于 TFS 与 VSS 标签比较的更多信息,请参见“比较 SourceSafe 标签和 Team Foundation Server 标签”,地址为: http://blogs.vertigosoftware.com/teamsystem/archive/2006/05/03/Comparing_SourceSafe_Labels_to_ Team_Foundation_Server_Labels.aspx什么是分支?分支(也称为 forking)是一种将文件集合分解为独立开发路径的操作。
Team Foundation Server 支持分支和复杂的合并,从而允许将来自独立分支的文件合并到一起。
例如,我们可以使用分支操作来隔离应用程序的主要版本。
在对已发布的应用程序版本执行分支操作后,将来对其进行维护时将更容易。
合并操作允许用户有选择地对两个分支同时进行修复。
分支和合并的目的是使我们能够隔离并发的开发流。
例如,当团队完成了需要在将来进行维护的某项生成时,可以创建分支。
我们也可以选择在非常庞大的开发组织中通过分支来隔离不同的团队,或支持在多个应用程序版本上的开发工作。
由于在执行分支操作时 TFS 版本控制 不为文件内容生成单独的副本,因此它不占用源代码管理数据库中的大量额外空间。
分支包含数据库中的一个指针,它指向修改基础版本的 delta
列表中的源内容。
其他资源 关于分支与合并的简介,请参见“分支与合并入门”,地址为: http://msdn2.microsoft.com/en-us/library/aa730834VS.80.aspx 关于分支的更多信息,请参见“如何:分支文件和文件夹”,地址为: http://msdn2.microsoft.com/en-us/library/ms181425VS.80.aspx 关于合并的更多信息,请参见“如何:合并文件和文件夹”,地址为: http://msdn2.microsoft.com/en-us/library/ms181428VS.80.aspx 关于如何在 Visual Studio 2005 中进行分支与合并的更多信息, 请参见“对 Team Foundation 源 代码管理进行分支和合并”,地址为: http://msdn2.microsoft.com/en-us/library/ms181423VS.80.aspx应在何时考虑分支?分支允许多名开发人员在隔离的相同文件上工作。
由于合并会产生很大开销,并要求管理冲突,因此应避免分支操作,除非需要使用分支的提供的文件隔离功能。
可以为生成加标签,并且可以在以后需要的时候进行分支操作。
是否创建分支的决策可以总结如下:实时合并冲突的代价是否更高?或者合并冲突的开销是否介于分支之间或更高?分支的常见原因包括: 发布 – 对需要维护的生成或多个并行发布的并行分支进行分支操作。
维护 – 维护先前发布的生成的分支。
功能 – 隔离实验性或风险性功能上的工作,这些工作可能导致项目其他部分不稳定。
隔离可能 导致项目其余部分不稳定的接口更改工作。
团队 – 隔离子团队,以便他们的工作不会破坏其他团队所做的更改。
隔离子团队,以便他们按 照统一的里程碑工作。
这非常类似于功能分支。
其他资源 关于分支与合并的简介,请参见“分支与合并入门”,地址为: http://msdn2.microsoft.com/en-us/library/aa730834VS.80.aspx 关于分支的更.