免责声明:我被 TFS 困住了,我讨厌它。

我的源代码控制结构如下所示:

  • /dev
  • /发布
  • /分支机构
  • /实验升级

我从开发分支到实验升级,但没有碰它。然后我在开发中做了更多的工作并合并到实验升级中。不知何故,TFS 抱怨我的源和目标都发生了更改,我必须解决它们。我为所有 5 个项目选择“从源分支复制项目”。

我检查了本地文件夹的实验升级,并尝试打开其中的主解决方案文件。TFS 提示我:

“最近已将项目添加到该解决方案中。您想从源代码管理中获取它们吗?

如果我说“是”,它会执行一些操作,但最终会失败,无法加载少数项目。如果我说不,我会得到同样的结果。

比较两个分支中的 sln 告诉我它们是相等的。

谁能让我知道我做错了什么?这应该是一个简单的分支/合并操作......

TIA。


更新:

我注意到,如果我在上面的对话框中单击“是”,项目将下载到源代码管理的 $/ 根目录...(IE。在 dev 和 Branchs 文件夹之外)

如果我在分支中打开解决方案并删除死项目并尝试重新添加它们(通过右键单击 sln,添加现有项目,选择位于分支文件夹中的项目,它会给我错误...

无法加载项目 c:\sandbox\my_solution\proj1\proj1.csproj,该文件已被删除或删除。我试图添加的项目路径是这样的:c:\sandbox\my_solution\branches\experimental-upgrade\proj1\proj1.csproj

到底是什么在指向这些项目 外部 他们的本地根?该解决方案文件与 dev 分支中的文件相同,并且这些项目加载得很好。我还查看了 vspscc 和 vssscc 文件,但没有找到任何内容。

有想法吗?

有帮助吗?

解决方案

@本

您实际上可以在 TFS 中执行完全删除,但强烈不建议这样做,除非您知道自己在做什么。您必须从命令行使用命令 tf destroy 来执行此操作

tf destroy [/keephistory] itemspec1 [;versionspec]
           [itemspec2...itemspecN] [/stopat:versionspec] [/preview]
           [/startcleanup] [/noprompt]

Versionspec:
    Date/Time         Dmm/dd/yyyy
                      or any .Net Framework-supported format
                      or any of the date formats of the local machine
    Changeset number  Cnnnnnn
    Label             Llabelname
    Latest version    T
    Workspace         Wworkspacename;workspaceowner

在执行此操作之前,请确保使用 /preview 进行尝试。每个人都有自己的分支方法。我的方法是分支发布,并在开发或根文件夹中进行所有开发。另外,听起来分支对你来说工作得很好,只是解决方案文件被搞砸了,这可能是因为绑定问题和 vssss 文件。

其他提示

@缺口:目前尚未对此进行任何更改。我可能必须删除它并重新分支(但是你确实无法在TFS中完全删除)

我不得不不同意...分支绝对是实验性变更的良好实践。搁架只是临时存储,如果我还不想签入,则会进行备份。但这需要在我们开发真实功能的同时进行开发。

如果不了解有关您的解决方案设置的更多信息,我无法确定。但是,如果您有任何可以解释它的项目参考资料。因为您的“分支”下有“实验升级”子文件夹,所以您的相对路径已更改。

这意味着当 VS 过去在 ..\..\project\whatever 中查找引用的项目时,它现在必须在 ..\..\..\project\whatever 中查找。注意额外的..\

要解决此问题,您必须重新添加项目引用。我还没有找到更好的方法。您可以删除它们并重新添加它们,或者转到属性窗口并更改它们的路径,然后重新加载它们。无论哪种方式,您都必须从任何项目中重新引用它们。

另外,检查您的工作文件夹以确保它没有将任何项目下载到错误的文件夹中。有时会发生这种情况...

有几件事。文件夹结构是否相同?您可以成功删除并重新添加项目引用吗?

如果您创建一个解决方案,然后手动添加所有项目,是否可行。(这可能不可行 - 我们有超过一百个项目的解决方案)。

另一件事(可能很愚蠢)——在你创建分支之后,你提交了吗?我想知道你是否分支并且没有签入,然后合并,然后当你尝试签入时,TFS 非常困惑。

@凯文:

这意味着当 VS 过去在 ....\project\whatever 中查找引用的项目时,它现在必须在 ......\project\whatever 中查找。注意额外的..\

您可能在这里有所了解,但是它并不能解释为什么有些项目加载而另一些项目不加载。我还没有发现它们之间的相关性。

我想我会尝试重新添加项目,看看是否有效。

@科里:

我想这就是我要尝试的......我有大约 20 个项目,其中 8 个左右未加载。文件夹结构与根目录相同...IE:DEV 之外没有任何参考资料。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top