Visual Studio创建多个/其他工作区

时间:2018-01-20 05:38:51

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

我从VS2010开始使用TFS。到那时我已经创建了自己的TFS服务器(myname.visualstudio.com)。我的问题是我在我的TFS网站(带有仪表板的网站)上创建了一个新项目。然后当我去VS2017并连接到那个新项目时,它会要求我按预期映射并获取它。我没有单击“Map& Get”按钮,而是单击“高级”以便我可以配置所有内容。

在工作区配置对话框中,我注意到 VS将其命名为“MYPCBLABLA_1”。如果我尝试删除“_1”,VS说“工作区blablabla已经存在于计算机blablabla ”,并且不允许我使用我现有的工作区名称。

为什么会这样做?我不能只使用1个工作区吗?根据我对工作空间的理解,它是我的项目的容器,因此不同的工作空间,不同的项目集。但他们真的是什么?

其他信息: 我不知道这是否有帮助,但过去,我曾多次格式化我的PC,我不确定在重新格式化后使用VS时是否会影响映射或工作区名称。

1 个答案:

答案 0 :(得分:3)

工作空间可能是TFVC中最不被人们理解的功能。你说他们是从TFVC存储库中隔离不同文件集的方法,你说得对。

很多人为特定项目或一组解决方案配置新工作区,但让我们看一下可以详细使用工作区的一些方法:

  • 修补程序:您可能需要为现在发生的事情创建修补程序,但现有工作区中有待更改。您可以创建一个新工作区来解决此特定问题,而不是搁置这些更改,在错误版本上执行“获取特定版本”。完成修复后,您可以继续使用其他工作区而无需执行任何操作。
  • 实验:您可能希望进行一些重大的重构,重组源代码控制或其他一些非常有影响力的操作。在新的(临时)工作区中执行此操作可帮助您防止弄乱正常的工作区域。
  • 查看其他人的更改:在对其他人的更改执行审核时,您可能希望拥有本地副本,以便您可以运行,注释和使用其他人的代码。您可以轻松地将这些更改带入临时工作区,而不是将这些更改带入您自己的工作区,之后您可以安全地将其删除。
  • 在您正在进行其他更改时执行合并:可能是您正在处理新功能的情况,当需要发布版本时,已经将某些更改合并回另一个分支。为了准备此版本,无需在当前工作空间中进行更改或覆盖正在进行的工作,在临时工作空间中执行这些类型的发布活动通常更容易,这样您就知道工作总是在确切的版本上完成在源代码管理中。
  • 防止对重要分支的意外更改:通过将生产分支放在单独的工作区中,您不会意外地将来自Development和Main的更改合并到单个签入中。由于Visual Studio通常会自动选择工作空间中的所有挂起更改,因此可能会导致对主/主分支的意外更改。我已经写了一个签到策略来防止这些问题,但是拥有单独的工作区是一个更安全的解决方案。
  • 在同一台工作站/服务器上与多个开发人员合作:在某些组织中,开发人员使用远程桌面到中央强大的服务器进行更改。为了确保每个开发人员都有自己的文件集,每个开发人员都可以获得他/她自己的工作区。另一种方法是使工作空间公开,这允许多个开发人员使用相同的工作空间文件夹。但这通常会导致各种意想不到的问题。
  • 浏览旧版本的代码:如果您需要查看/比较旧版本的旧版本,您通常可以在Visual Studio中使用文件夹差异视图,但如果您需要进行更彻底的比较,您可能希望TFVC仓库中有2个相同文件夹的副本。创建两个工作区将允许您在本地磁盘上拥有同一文件夹的两个不同版本。
  • 为合并或标签准备特殊版本:您可以合并和标记一组文件的工作区版本。您可以创建工作区,然后使用获取特定版本来获取特定文件的特定版本,这些版本都可以来自不同的变更集版本。一旦您满意,您就可以执行标签或合并或分支操作,以在服务器上存储此特定工作区版本配置。

如您所见,工作区允许您在一台计算机上进行并行开发,隔离更改等。

有创意

如您所见,工作空间是一个非常强大的概念。适用于大量操作。但是你需要彻底理解这个概念。许多开发人员并不完全了解工作区是什么以及它们是如何工作的,他们错过了一些最强大的TFVC概念。

整合和清理

在您的情况下,您现在需要工作空间。为了合并这些(如果您愿意),您可以从_1文件夹中取消映射文件夹,然后在原始工作区中映射这些相同的文件夹。您还可以从TFS服务器中删除_1工作区,然后更新原始工作区的映射。

请记住,工作区存储在本地计算机上,但TFS服务器还有一个注册表,其中列出了哪些TFVC文件夹映射到哪个工作站。因此,仅删除本地磁盘中的文件是不够的。您需要将这些更改保存到TFS服务器(这在更改映射后执行get操作后会自动发生)。

要检查在TFS服务器上注册到工作站的工作区,请使用:

tf vc workspaces /computer:YOURWORKSTATIONNAME

然后使用

删除旧工作区
// DELETE the local workspace
tf vc workspace /delete:WORKSPACENAME

// DELETE the workspace registration on the TFS server
tf vc workspaces /remove:WORKSPACENAME