【问题标题】:Migrating multiple VSS top-level projects to a TFS repository - how (and why)?将多个 VSS 顶级项目迁移到 TFS 存储库 - 如何(以及为什么)?
【发布时间】:2023-03-29 09:19:01
【问题描述】:

我们来自 Visual Source Safe 背景,正在尝试迁移到 Team Foundation Server 2008。

我在理解如何设置源代码管理时遇到了一些麻烦。考虑文件系统上图 #1 中的以下文件夹结构:

图#1:

C:\src\01-开发

  • 项目1
  • 项目2
  • 项目3
  • 项目4
  • 项目5
  • 项目6

现在,假设在 Proj1 下,我有一个名为 solution1 的解决方案,它依赖于位于 Proj2 和 Proj3 中的项目。所以我在 Proj1 的解决方案中所做的是使用 Visual Studio 的“添加现有项目”功能将 Proj2 和 Proj3 添加到 Proj1 的解决方案中。现在我在 Proj1 的解决方案中拥有了所有三个项目,可以修改代码,重新编译依赖项目等。Proj4、Proj5 和 Proj6 与 Proj1、Proj2 和 Proj3 无关。

使用 Visual Source Safe,这很容易,我们只需将 Proj1、Proj2 和 Proj3 签入到源安全存储库,一切正常。

所以,现在我想为 Proj1 设置一个 TFS 团队项目。所以在 Visual Studio 2008 中,我新建 File/New Team Project 并输入 Proj1 作为团队项目名称,让它经历大约 10 分钟的内容,最后创建团队项目。在团队资源管理器下,有一个名为 Source Control 的节点。如果您双击该节点,它将带您进入源代码管理资源管理器,我会看到 TFS 服务器名称以及 TFS 项目名称(称为 Proj1)。

问题 #1: 现在,我想做的是将 Proj1、Proj2 和 Proj3 文件系统文件夹添加到这个团队项目中。因此,我在源代码管理资源管理器中右键单击 Proj1 节点并执行“将项目添加到文件夹”。然后,我从文件系统中选择 Proj1、Proj2 和 Proj3,然后 TFS 将它们加载到 Source Control Explorer 窗口中。但是,如果我将本地路径映射到 C:\src\01-development\Proj1 并执行最新操作,TFS 将在 C:\src\01-development\Proj1 文件夹内创建另一个名为 Proj1 的文件夹,它会将所有文件拉到那里。这不是我想要发生的。我希望 TFS 以与 Visual Source Safe 相同的方式使用我现有的 Proj1、Proj2 和 Proj3 文件夹。

有没有办法做我想做的事?

问题 #2: 我使用过 subversion,虽然它有其怪癖,但我发现它比 TFS 更易于使用一个数量级。不过,我的老板对使用 TFS 很执着,我似乎无法让他远离它。他的理由是 TFS 提供了 subversion 所没有的项目管理集成。我只是想知道你们中同时使用这两种方法的人,是否有充分的理由使用其中一种?

【问题讨论】:

    标签: tfs


    【解决方案1】:

    我做错的关键是试图在主 TFS 项目文件夹之外拥有源文件夹。我学到的是,使用 TFS,最好将所有内容都保存在这个根文件夹下。

    回到我原来的例子: C:\src\01-开发

    * Proj1
    * Proj2
    * Proj3
    * Proj4
    * Proj5
    * Proj6
    

    如果 Proj1 对 Proj2 和 Proj3 有依赖关系,那么我可以使用这样的目录结构:

    Proj1Root

    • 项目1
    • 项目2
    • 项目3

    现在,如果 Proj2 和 Proj3 可以在其他项目(除了 Proj1)之间共享,那么我也可以为这些项目制作 TFS 项目,然后我可以将 Proj2 和 Proj3“分支”到 Proj1 中。

    所以现在我们有:

    Proj2Root

    • 项目2

    Proj3Root

    • 项目3

    Proj1Root

    • 项目1
    • Proj2(从 Proj2Root 下分支)
    • Proj3(从 Proj3Root 下分支)

    然后我可以对 Proj2Root 和 Proj3Root 下的代码进行更改,然后我可以将这些更改合并到 Proj1Root 中(或者我可以选择不合并它们)。

    无论如何,tvanfosson 是对的,只是我对 TFS 不是很熟悉,我让我的挫败感占了上风。我发布了这个答案,希望如果其他人在如何设置目录结构方面也有同样的困难,也许这会有所帮助。

    【讨论】:

      【解决方案2】:

      如果您已将解决方案从解决方案添加到源代码管理,而不是通过源代码管理资源管理器添加,它将使用您现有的文件夹结构。打开解决方案后,您只需右键单击解决方案并选择“将解决方案添加到源代码管理”。这会将解决方案中的所有项目添加到所选(或新创建的)源代码管理文件夹中。注意:您仍然必须先创建团队项目。

      您还可以通过转到源代码管理资源管理器来移动已签出的树。从下拉列表中选择“工作区”,然后单击感兴趣的工作区并单击“编辑”。在编辑模式下打开工作区后,您可以更改工作区映射到的本地文件夹。请注意,这将删除现有位置中的文件。

      我建议在您的生产代码上尝试其中一些东西之前,先用一个测试项目来玩一下 TFS。您可能还想查看 MSDN 上的Team System Developer Center,并在您那里下载TFS Power Tools

      关于你的第二个问题——我实际上不使用 TFS 中的项目管理工具。对于我所做的,即使是 TFS 中的敏捷东西也太重了。我主要依靠每个项目的一组 wiki 来跟踪需要完成的工作。这并不是说这些工具不好,只是我对它们没有任何直接经验,只是它们超出了我(主要是独立开发者)的需要。

      【讨论】:

      • “如果您已将解决方案从解决方案添加到源代码管理,而不是通过源代码管理资源管理器添加,它将使用您现有的文件夹结构。打开解决方案后,您可以简单地右键 -单击解决方案并选择“将解决方案添加到源代码管理。”我试过了,但我收到警告说:“您尝试添加到源代码管理的项目可能会导致其他源代码管理用户难以打开此解决方案或获取它的新版本。”还有更多的文字,但这个评论的东西已经用完了字符。
      • 听起来您使用的是一些本地引用而不是 UNC 路径或项目引用。我实际上从未见过这个错误,但我小心地使用路径作为我的引用,这些路径将为其他用户正确解析。
      • 我不确定。无论如何,我现在正在给我的老板发电子邮件,让他知道我不推荐使用 TFS 进行源代码控制。它似乎有很多问题。
      • @Dave - 你可能会因此严重损害你的可信度。我认为问题只是你不熟悉它。我已经使用它好几年了,一旦你熟悉了它,我想你会很高兴的。当您有冲突时,我特别喜欢多个开发人员的合并功能。我不会这么快就放弃的。
      【解决方案3】:

      “您尝试添加到源代码管理的项目可能会导致其他源代码管理用户难以打开此解决方案或获取它的更新版本。”

      我认为这个警告很能说明问题。似乎解决方案旨在容纳存在于其下的子项目(逻辑上和物理上在文件系统上)。甚至早在 2002 年模式和实践团队的 this 文章似乎也表明了这一点。

      话虽如此,我当然不太了解您的工作环境或您的需求,但我只是想指出一个我看到的根本问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-13
        • 1970-01-01
        • 1970-01-01
        • 2023-03-03
        • 2012-02-13
        • 1970-01-01
        相关资源
        最近更新 更多