更改活动项目中 TFS 解决方案的结构?

Changing structure within a TFS solution in active projects?

我们有一个包含大约 30 个项目的解决方案,这些项目在给定的目录结构(在解决方案中)中被组织化。然而,在文件系统上,项目到处都是,所以现在我需要清理它。然而,这有几个问题:

  1. 如果我在文件系统上移动一个项目,它将在解决方案中不可用,为了解决这个问题,我将不得不删除该项目,然后将现有项目添加到解决方案中。我不确定这将如何影响最不会丢失的 TFS 历史记录?
  2. 有人在做这些项目,如果他们在入住时搬家,可能会有大问题?

那么,我该如何解决这个变化,同时又不会阻碍该解决方案中的任何其他开发?

我不得不做同样的事情。 我们的解决方案过去和现在都是这样组织的:

TeamProject
    App1
        DevFolder (contains branches of BranchTest)
            BranchOfDev1
            BranchOfDev2
            BranchOfDev3
            BranchOfDev4
        TestFolder
            BranchTest
        ProdFolder (contains branches of BranchTest)
            BranchProdV1
            BranchProdV2
            BranchProdV3
    App2
        Dev...
        Test...
        Prod...
    ...
  • 这只是一个解决方案,对其他 Folders/branches 等中的现有项目存在多个依赖关系。
  • 测试分支的所有分支。 Devs 合并到 Test,ProdVersions 从 Test 分支出来。
  • TestBranch 包含应用程序的最新版本
  • 开发人员只在他们自己的开发分支中开发,完成后他们会合并到 TestBranch

我是这样搬的:

  • 在 TFS 中创建一个新的团队项目
  • 根据现有结构创建新结构(分支概念可以)
  • DEV-STOP。每个人都必须 Merge 到 TestBranch

  • 在某一时刻将测试分支移动到新位置。

  • 也移动了所有依赖项
  • 使用新的依赖位置手动编辑 .sln,检查(回答您的问题)
  • 删除所有 DevBranches
  • 在新结构中创建新的 DevBranches
  • 每个人都删除他们的本地工作区,从新的 TeamProject 重新下载

  • 隐藏旧文件夹。如果您想保留历史,请不要删除它们!

  • 大家现在应该很开心吧

编辑:我们现在正在为所有外部和公共依赖项创建 nuget 包。这样,将来我们将能够更新 core/dependencies 而不会破坏任何使用它们早期版本的内容。

动作要快,至少每个动作都要快。

如果您需要将项目移动到正确的位置,您应该:

  1. 通知所有开发人员您正在移动项目而不是签出。
  2. 移动项目文件夹
  3. 在记事本中打开解决方案文件并将位置引用更改为项目
  4. 保存并签入。
  5. 指示所有其他用户获取最新信息。

在几天内慢慢地为每个动作做这个,你应该会很好。大爆炸也是可能的,但如果你有 50 个开发人员,那就太昂贵了。