我们正致力于更好地利用我们的TFS / TFVC服务器,并从TFS工作项目中受益,并且我已经负责确定如何这样做。
我们有很多项目,其中大多数都使用公共代码库。我们实现新功能的方法是只包含对代码的引用,并在需要更改时将它们组合在一起,而不是引用库的DLL。
我的问题围绕着设置工作区,这些工作区在更新公共库中的代码以及正在处理的主要项目时不会让这件事变得麻烦。
为了简单地处理这个问题,我为每个我们正在开发的产品创建了多个团队项目,看起来个别开发人员必须确保在连接到单个项目的所有工作区之间移动并签入代码对于他们每个人。我觉得这很笨重,必须有更好的方法来完成这项工作。
结构可能与此类似:
ROOT
|- Common Code
|- Team projects (each having their own backlog and referencing "Common Code"
|--- Product one
|--- Product two
|--- Product three
更好的方法是在单个工作区上工作,只创建团队并为每个工作区提供积压工作,还是有一种干净的方式允许开发人员使用来自各个团队项目的公共代码库?
答案 0 :(得分:4)
您的团队项目设置需要考虑很多因素。分离出不同项目的最重要原因是安全性。如果您需要确保不同的项目无法看到其他项目的元数据,那么单个团队项目是个坏主意。
如果您的团队在他们遵循的流程中存在重大差异,他们可能还需要不同的团队项目,因为流程只能在项目级别定义,并且同一团队项目下的所有团队必须遵循相同的流程进程(Scrum,CMMI,Agile或自定义进程)。将团队转移到相同的流程模板可能是值得的,但Scrum和Agile之间没有太多差异,因此除非您依赖CMMI或重量级的自定义模板,否则您可以在其中任何一种实践Scrum和其他类型的敏捷带有一点幻想的模板。
在所有其他情况下,考虑creating a single Team Project and using Team Backlogs to represent your projects可能很有价值。这种方法通常被称为"一个项目来统治它们所有"设置。
至于你的常用代码"项目,我个人考虑使用Visual Studio Team Services的包管理功能来生成对公共代码所做更改的NuGet包。 The ALM Rangers have written some guidance on setting this up in the past, it's not updated to the latest version of VS and TFS, but it does give a nice outline of the process.然后将这些公共库作为NuGet包引用包含在您的其他项目中。这使您可以更好地控制特定项目何时升级到特定版本的公共库,并使用公共库在不同项目之间实现良好分离。完成此操作后,还可以更轻松地设置诸如持续集成,门控检查等功能。使用复杂的工作区将使您更难以找到。
所以它看起来像:
+- YourAccount.visualstudio.com
+- CompanyProject (Team Project)
+- TFVC Repository (Can only be one)
+- Common (folder)
+- Project 1 (folder)
+- Project 2 (folder)
+- Project 3 (folder)
+- Package Management nuget repository
+- Common
+- Teams
+- Root / Company
+- Project 1
+- Project 2
+- Project 3
如果您将项目移动到Git,它也会变得容易一些,因为您可以在同一个项目下拥有多个Git存储库。