1

免责声明:我被困在 TFS 上,我讨厌它。

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

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

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

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

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

如果我说是,它会做一些事情,但最终会因为加载少数项目而失败。如果我说不,我会得到相同的结果。

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

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

TIA。


更新:

我注意到,如果我在上面的对话框中单击“是”,项目将下载到源代码控制的 $/ 根目录...(即从 dev 和分支文件夹中)

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

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

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

想法?

4

6 回答 6

2

@本

您实际上可以在 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 文件。

于 2008-09-03T20:51:26.177 回答
0

@Nick:目前还没有对此进行任何更改。我可能不得不删除它并重新分支(但是你真的不能在 TFS 中完全删除)

而且我不得不不同意......分支绝对是实验性更改的好习惯。搁置只是临时存储,如果我还不想签入,可以备份。但这需要在我们开发真正的功能时进行开发。

于 2008-09-03T20:40:01.790 回答
0

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

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

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

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

于 2008-09-03T20:47:18.183 回答
0

有几件事。文件夹结构是否相同?你能成功删除和读取项目引用吗?

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

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

于 2008-09-03T20:53:56.780 回答
0

@凯文:

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

您可能会在这里找到一些东西,但它并不能解释为什么有些项目会加载而其他项目不会。我还没有发现它们之间的相关性。

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

于 2008-09-03T20:56:51.733 回答
0

@科里:

我想这就是我要尝试的……我有大约 20 个项目,还有 8 个左右没有加载。文件夹结构与根目录相同...即:在 DEV 之外没有任何引用。

于 2008-09-03T20:58:07.847 回答