8

所以我遇到了一个情况,我们有一个有 10 名开发人员的项目。每个开发人员当天进来时,都会随机分配一台机器用于当天的开发。机器名称不同,例如 DEV01 - DEV10。在将它们发布给开发人员时,机器是相同的,并且开发人员在白天所做的任何更改都不会保留在机器上(源代码更改存储在 TFS 中,而不是本地)。这些当然实际上是虚拟机,但这与手头的问题并不真正相关。

问题是每天早上,开发人员都会遇到 3 个问题:

1) 他们被分配的机器可能不是他们最后被分配到的同一台机器。例如,DevMan A 可能昨天使用了 DEV04,今天收到了 DEV06。他的工作空间定义现在与 DEV06 相关联;他必须创建一个新的工作空间,或者将旧的工作空间迁移到 DEV04。

2) 他们分配的机器可能昨天已经在使用,并且某些映射可能会发生冲突。例如,DevMan A 今天可能有 DEV04,并希望创建一个工作区,将项目文件夹映射到“C:\MyProj\Solution”。但是,DevMan B 昨天有 DEV04,他使用了相同的项目文件夹。TFS 现在抱怨。

3)这可能是他们第一次在给定的机器上。他们现在需要为这台机器重新创建新机器的所有源代码控制映射。

所有这些问题都可以根据具体情况以简单的方式解决,但它确实会降低早上的工作效率。如果 TFS 工作空间定义可以“宽松”,我们更愿意,这样它们就不会以某种方式在定义中包含机器名称。除此之外,如果有人知道上述问题的解决方案可以自动运行或在有限的用户干预下运行,那也是理想的。

4

4 回答 4

7

首先,非常明显的答案是将机器专用于用户。

其次......如果你真的想解决上述问题:

如果不将工作区分配给特定机器,则无法使用它们。该假设隐含在产品中。但你可以骗它:)
警告:这个食谱似乎有效,但我没有亲自运行过使用它的项目。

  1. 为每个用户分配一个“虚拟”机器名,即 UseridVM
  2. 对于每个虚拟机,需要以下(持久或启动脚本)设置:
    • 创建一个新的环境变量“用户变量”即_CLUSTER_NETWORK_NAME_=UseridVM
  3. 很高兴拥有:使用专用于用户 ID 并映射(或使用脚本安装)到“D:”的虚拟硬盘驱动器,该驱动器跟随用户从 VM 到 VM。

现在,当用户打开 Visual Studio 时,工作区将使用指定的值“UseridVM”作为机器名称,因此在每台机器上都会找到相同的工作区。

如果您没有永久虚拟硬盘驱动器,那么每个用户必须确保在当天开始时执行“真正的”“获取最新”(获取特定版本,选中所有框),因为工作区会记住哪些文件已经已下载,如果感觉它们已经存在,则不会重新下载它们。

于 2010-03-30T00:49:48.403 回答
3

1.) 对于您要使用的每个工作站,您需要定义一个工作区(远程 <=> 本地映射)。您可以将源文件存储在网络上(由于 VS 缓存,不建议这样做),但本地工作区(映射定义)需要存在于特定用户的特定 PC 上。

2.)为每个开发人员创建单独的本地文件夹,以防止不同的人在同一个文件夹上工作并获得最新的其他人签出的代码。例如:

c:\Projects\DevManA\...
c:\Projects\DevManB\... etc.

3.) 这可能会引起很多讨论,但我建议将 TFS 的根映射到本地工作区,例如。DevManA 映射:

$/ to C:\Projects\DevManA\

然后,当您检查项目时,您将获得结构:

c:\Projects\DevManA\TFSProject1\..
c:\Projects\DevManA\TFSProject2\..
c:\Projects\DevManA\TFSProject3\..

等等

这是每个人都可以在 5 秒内完成的简单快速的映射,您就可以开始了。然后每个人在磁盘上都有相同的布局,就像在 TFS 中一样,这也更容易“适合大脑”。

于 2010-03-29T14:00:40.420 回答
2

我不知道这是否符合问题中所述的要求,但您可以检查一下:

http://blogs.msdn.com/granth/archive/2009/11/08/tfs2010-public-workspaces.aspx

TFS 2010 添加了可供多个用户在同一台​​机器上使用的公共/共享工作区。

于 2010-04-30T19:33:30.670 回答
0

您可以将工作空间放置在共享网络驱动器上,这样开发人员登录的机器(虚拟或其他)都没有关系。这很好用,但您还必须配置一些 COM 内容使其满意。

于 2010-03-25T19:16:14.857 回答