Visual Studio 2017 年,每个 TFVC 项目 1 个工作区或 1 个工作区内的多个 TFVC 项目?

Visual Studio 2017, 1 workspace per TFVC project or multiple TFVC projects within 1 workspace?

我对工作区和工作文件夹的概念有点困惑。我在源代码管理资源管理器中看到我可以在我的机器上设置多个工作区。我对工作区的理解基本上是一个包含我所有项目(甚至不相关的项目)的文件夹。例如,C:\Projects

我目前有一个名为我的计算机名称的工作区,它指向一个名为 C:\Projects 的目录,其中有几个项目,每个项目都是 visual studio 在线上的项目。例如:DESKTOP-43DDV90P 中的每个项目都有一个工作文件夹。

WORKSPACE: DESKTOP-43DDV90P
Source Control Folder: $/Project1, Local Folder C:\Projects\Project1
Source Control Folder: $/Project2, Local Folder C:\Projects\Project2

我想知道这是否是一个正确的假设,或者我是否应该像下面这样为每个项目创建一个工作区:

WORKSPACE: PROJECT1-WS
Source Control Folder: $/Project1, Local Folder C:\Projects\Project1
WORKSPACE: PROJECT2-WS
Source Control Folder: $/Project2, Local Folder C:\Projects\Project2

当我在源代码管理下使用新的 ASP.NET 核心 Web 应用程序完成所有设置后,我的目录结构如下所示:

C:\Projects\Project 1
this contains:
Project1 (folder vs creates for solution)
BuildProcessTemplates (folder from vs online)

C:\Projects\Project 1\Project1
this folder contains:
Project1 vs solution file
Project1 (folder that finally takes you to the project1 site files)

TFS 工作区基本上是您的计算机和 TFS 服务器之间的一个帐户。它包含一组 ServerPath -> Local Path 映射,以及一些关于如何维护工作区的设置(例如权限、文件时间戳行为等)。

通常在处理项目时,您最终会创建分支。这是工作区映射变得相关的时候。如果你没有分支,那么你通常只想映射整个代码库——即你想要所有的源代码。但是当您 有分支时,通常一次只需要一个分支。例如,如果我有这个:

您可以看到每个分支如何包含同一组文件。如果我在 FeatureX 分支中开发某些东西,最终我会将它合并到 Master 分支中。

此时您的问题变得最相关:我是否有一个包含这两者的工作区,或者我是否为每个分支都有单独的工作区?这是一个偏好问题。我更喜欢有单独的工作区,因为它避免了我在多个分支中进行更改并且只想签入其中一个的更改的情况。例如:

在较大的项目中,我可能不会注意到我修改了来自两个不同分支的文件。 TFS 确实允许这样做,但通常当我在一个分支机构工作时,我不想影响另一个分支机构。另一个可能发生的问题是,如果其中一个包含的变更集跨越多个分支,TFS 在合并变更时有时会出现问题。例如,假设我签入了图中的零钱;然后我创建一个新分支(Feature2);然后我将变更集合并到 Feature2 中。应该发生什么?它会将我签入 Master 或 FeatureX 的副本带走吗?你可以做到这一点,但关键是你也可能陷入一些奇怪的情况。对于多个工作区,我只会看到与该工作区相关的分支的更改:

这取决于你的情况,公司政策等...如果工作区中的映射太多,则很难管理,如果没有,工作区就可以了。

一些关于优化的文章可以帮助到你:

Using multiple workspaces with Visual Studio

Optimize your workspace