【问题标题】:Visual Studio 2017, 1 workspace per TFVC project or multiple TFVC projects within 1 workspace?Visual Studio 2017,每个 TFVC 项目 1 个工作区还是 1 个工作区中的多个 TFVC 项目?
【发布时间】:2017-09-10 06:12:41
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 感谢您的回答。当我完成将工作文件夹映射为项目时,目录结构如下所示。 C:\Projects\Project1... 这个文件夹中有 BuildProcessTemplates 和 Project1 文件夹。然后,如果您单击此处的 Project1,您将获得其中包含 VS 解决方案的文件夹,最后,如果您再次单击 Project1,它将带您进入项目文件。这是针对其中包含 ASP.NET Core Web 项目的解决方案。是否有意义?我只是觉得外面有一个额外的文件夹,但我想这可能是有道理的。
    • 另外,你能告诉我你做事的顺序吗?我首先在visual studio online上创建了一个新项目,然后在工作区中为该项目设置服务器->本地映射,然后确保我连接到正确的团队项目,最后单击底部的新解决方案团队资源管理器窗口添加一个新的 asp.net 核心项目,但添加时我没有选中添加到源代码管理。创建项目后,我右键单击解决方案并添加到源代码管理。这看起来对吗?
    • @BlakeRivell 我已经更新了我的答案,以展示一个带有分支的琐碎项目。这通常是我希望看到的。 BuildProcessTemplates 由 TFS 自动添加,然后你有一个文件夹用于分支,然后在里面你有你的解决方案、项目,在你喜欢的任何文件夹结构中。
    • @BlakeRivell 关于订单,同样,这是一个偏好。如果您确实选中了 Add To Source Control 框,它将根据当前工作空间映射,基于本地路径添加它们。如果未映射,它应该提示您添加新映射。要记住的主要事情是为您的第一个分支创建一个文件夹,并将您的项目放入其中。
    【解决方案2】:

    这取决于您的情况,公司政策等...如果工作空间中的映射过多,则很难管理,如果没有,则工作空间可以。

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

    Using multiple workspaces with Visual Studio

    Optimize your workspace

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-16
      • 1970-01-01
      相关资源
      最近更新 更多