3

我们有一个 StarTeam 视图,其中包含两个处于“未知”状态的文件 - 有没有人了解它们为什么处于这种状态和/或我们如何让它们脱离这种状态?

删除它们并用不同的名称重新添加它们是唯一的解决方案吗?

请注意,如果您检出这两个文件(定期或使用“强制检出”),它们将始终被列为“未知”(烦人)。

谢谢。


更多信息基于克雷格的以下建议:

a) 使用 MD5 校验和计算文件状态:相同的结果(“未知”状态)

b) 这两个有问题的文件在服务器上只有一个修订版。我不确定这是否是因为我们的 CM 小组试图通过删除和重新创建文件来解决问题,或者是否真的只有一个修订版。这些文件是文本文件。

c) 我尝试删除本地机器上的文件并刷新状态。当我这样做时,我看到的不是列出为“未知”的两个文件,而是总共列出了四个状态为“丢失”的文件。每个文件列出两个条目 - 每对具有相同的文件名、文件夹路径、“修改者”和“签入时的文件戳”。我不知道为什么每个文件都列出了两次。如果我选择一对中的每个条目并选择“比较内容”,我的差异工具会说它们是相同的。

无论我使用 MD5 校验和比较还是非 MD5,这四个文件都有同样的奇怪问题。

如果我尝试检查所有四个丢失的文件,我会收到两个提醒我合并文件的警报。我说不,这些文件现在在我的本地文件系统上,状态又回到了我开始的地方——两个文件被列为“未知”。


克雷格的更新:

你肯定在做某事。我将每个重复的项目移动到另一个目录。这立即解决了这个问题,因为我现在可以在没有任何“未知”项目的情况下签出四个项目(两个在同一目录中,两个在新目录中)。然后我删除了我移动到新目录的两个项目。

在这样做时,我看到了更多信息。我们不知何故有一个这样的目录结构:

Parent_Dir
--SubDir1
--SubDir1
--SubDir1
--SubDir1 <- Two items were here
--SubDir1 <- Two items were here
--SubDir2
--SubDir3
--SubDir4
--SubDir5

不知何故,我们有五个同名的子目录,而这两个文件存在于两个同名的子目录中。

问题似乎已解决。你认为我应该手动删除额外的子目录吗?


感谢克雷格,这个问题似乎得到了解决。我不知道这种情况是如何造成的(任何人?)但是..我们现在很好。谢谢克雷格!

4

4 回答 4

6

在确定问题所在之前删除文件将是一个巨大的错误。删除并重新添加该文件将终止历史记录和该文件的任何链接。由于 StarTeam 内部的工作方式(无论如何,使用 Native-II 存储库),它也可能无法解决问题。删除文件并重新添加相同的文件实际上不会更新存储库中的任何内容,除了指向该修订的指针。当您删除文件时,修订本身会保留在那里,重新添加它只会创建一个指向该修订的新指针。

如果您还没有这样做,我强烈建议您告诉 StarTeam 使用 MD5 校验和来计算文件状态。通过工具->个人选项->文件->使用文件校验和计算状态在客户端中执行此操作。然后再次尝试更新状态。这不是默认设置(至少在某些版本的 StarTeam 中),因此值得检查。如果您还没有这样做,它可能会自行解决问题。

首先要做的是确定修订版在服务器上是否有效。如果文件是文本,最简单的方法是比较该修订版和之前修订版之间的内容。如果确实发现修订已损坏,那么最好的解决方案是签出较早的修订,然后强制签入。这样您就可以保留文件的历史记录。

如果文件在服务器上看起来没问题,则通过比较内容在本地对其进行测试。如果文件在本地损坏,请随时在本地删除文件,然后再次检查。与删除服务器上的文件不同,这样做不会丢失任何内容,除了本地修订。

如果这些建议不能解决问题,我仍然不建议删除服务器上的文件。在这里告诉我你的调查结果,我们会看看我们可以从那里去。在我看来,扼杀历史几乎总是错误的。

更新

根据帖子中的更新信息,我对这里发生的事情有了更好的了解。很可能有两个项目指向同一个文件,并且具有相同的名称。“项目”是 StarTeam 中的一个概念,与单个文件、更改请求、需求等可以同时存在于多个位置这一事实相关。例如,您可以在两个不同的视图或项目中拥有一个文件。

通常,您在同一个文件夹中没有同名的项目。但它可能发生。这可能解释了“未知”状态。当您告诉 StarTeam 将磁盘上的文件与服务器上的同名项目进行比较时,它可能无法确定应该查看哪个项目。

我会尝试的第一件事是尝试将这两个项目中的一个拖动到其他地方。如果这样可以解决相关文件夹中的问题,您可以在其他位置删除该项目,而不会影响文件夹中的项目。另一方面,如果将其中一个项目拖到别处导致它们都移动,则很容易将项目拖回它们原来的位置。

更新 2

你认为我应该手动删除额外的子目录吗?

是的,但就像文件一样,先移动它们,并确保您要保留的子目录不受影响,然后再删除它们。

于 2009-01-28T15:42:44.163 回答
2

如果再次出现此问题,识别此问题的一个好方法是单击根文件夹,将文件夹路径添加到显示的列,然后单击所有后代按钮。按名称对文件进行排序,并查找未知文件并查看是否有多个同名文件检出到同一路径。这通常是错误共享、添加或更改文件夹签出路径的结果。

由于尚未确定 StarTeam 检出文件的顺序,因此将两个同名的不同文件指向同一个本地位置是错误的。2005R2 本机 Windows 客户端和跨平台客户端会以稍微不同的顺序提取文件,导致存在此问题的视图生成具有不同文件的签出。

有几种方法可以合法地结束这种情况 - 在提示中保留单个文件的多个分支并通过视图标签指定要使用的分支是一种常见的方法。StarTeam 是少数几个可以像这样处理多个引用的 VC 之一。

Separately, if you can help it, never delete and re-add a file. 99% of the time, it isn't what you want to do. Re-adding a file to the server gives it a whole new archive in the database and it will not be tied in any way to existing shares of that file. You will also lose all of your revision history. Instead, look for ways to move files. And if you have multiple files with the same name and content on your server, it is usually a good idea to make an effort to share the file to the various places it should exist rather than re-add it. This will make sure your changes propagate so you don't need to check-in fixes multiple times.

于 2009-03-23T08:47:08.687 回答
1

这些文件是否添加了两次?您可以多次添加相同的文件,这可能会导致此错误。另外,检查参考选项卡 - 这些链接文件是否指向存储库中的其他位置?

于 2009-01-28T22:11:51.833 回答
0

那可能是文​​件或它们的状态在服务器上损坏了吗?在这种情况下,删除并重新添加是唯一的方法。

于 2009-01-27T23:04:20.777 回答