visual-studio - Visual Studio 2017,每个 TFVC 项目有 1 个工作区,还是 1 个工作区中有多个 TFVC 项目?

标签 visual-studio visual-studio-2015 azure-devops visual-studio-2017 tfvc

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

我目前有一个名为我的计算机名称的工作区,它指向一个名为 C:\Projects 的目录,其中有几个项目,每个项目都是 Visual Studio Online 上自己的项目。例如: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 Core 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 映射,以及一些有关如何维护工作区的设置(例如权限、文件时间戳行为等)。

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

Sample repository with Master and FeatureX branches

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

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

Showing changes across multiple branches

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

Sample workspace mapping for FeatureX branch only

关于visual-studio - Visual Studio 2017,每个 TFVC 项目有 1 个工作区,还是 1 个工作区中有多个 TFVC 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43403834/

相关文章:

wcf - Team Foundation 服务的 SOAP 警报

visual-studio - 如何强制MSBuild复制项目中的空文件夹?

c - Azure DevOps 管道构建 Makefile

angular - 在 TS 2.8 中使用 TextEncoding 和 Angular 6

c++ - 如何在 visual studio 2015 中创建 .vcxitems

c# - 使用 Targus Laptop Dock 的 Visual Studio Update 3 中的 System.Runtime.Remoting.RemotingException

c++ - 如何在 Visual Studio 中调试单行函数?

azure-devops - 将 Azure DevOps 内部版本号设置为 Gitversion MajorMinorPatch 号

c++ - 如何修复 ifstream 语法错误,以及 C++ 中可能丢失数据的转换错误?

visual-studio - 如何使用英特尔 Visual Fortran 编译器在 Visual Studio 2008 中自动完成 Fortran90 代码?