TFS 2008:覆盖文件上的标签

时间:2010-07-09 15:50:14

标签: tfs label

我正在尝试在文件上应用Label,但我收到此错误,因为Label已存在于旧版本的文件中:

TF203007:无法创建标签,因为版本控制项$ / MyProj / MyFile.cs已存在或已多次指定。

我希望将Label从旧版本移动到最新版本。

有可能吗?

非常感谢!

2 个答案:

答案 0 :(得分:1)

一个非常简单的解决方法(如果在你的情况下允许)解决这个错误消息是(特别是当每个人都站在你身后紧急解决这个问题时):

  • 只需更改buildnumber.txt文件(保存最后一个成功构建编号“number”的文件)并将该数字转换为新值,即如果您收到TFS>的错误。 ...无法标记...文件,并且在该构建时间期间,TFS尝试应用的构建标签(比如说)是:TFS_RELEASE_BUILD_5,然后,只需将构建数量提升到10或20或50,即下一个您的构建脚本将自动生成的内部版本号将为11,21或51。

问题解决了。

我的情况:

  1. 我在2周后的某个时候创建​​了一个分支“11.0”。在这个分支上,我们创建了从1到10的构建。构建标签的格式为:TUD_COR_11.0.0.1 ..到10。

  2. 昨天,我删除了11.0分支。

  3. 昨天,我们不得不从一个新的源分支再次重新创建这个分支,所以我们做的是:

    一个。删除11.0分支。检查了更改,因此分支现在已经消失。

    湾删除了构建定义创建的所有构建,最后删除了构建定义(因为其他团队成员希望我再次从头开始为新的11.0分支创建新的构建定义(从新的源分支创建)。创建构建定义,我成功地看到标签/ etc /的“tick”标记与现有构建定义相关的任何内容都将根据Delete操作删除。

  4. 现在,我从源分支的最新数据中再次创建了新的11.0分支。

  5. 再次创建构建定义。

  6. 使用构建标签TUD_COR_11.0.0.1再次创建COR构建。现在TFS给了我类似的“错误消息”,如上面的主题所述。

  7. 可能的解决方案:

    一个。删除文件“根据构建日志”,其中TFS标签操作失败。您可以使用sidekick -OR TF label命令。注意:如果从文件中删除标签(或者在此标签下删除此文件,即此标签不再应用于此标签),这可能非常耗时。

    * 注意:这里我们不会从源代码管理中删除该文件。 只是从标签概念中删除文件

    B中。或者只是增加构建脚本用来生成构建标签的buildnumber.txt ..如果我的buildnumber.txt(它位于源控件分支树中的某个位置),它包含值“0”并且它正在创建构建带标签的“1”:TUD_COR_11.0.0.1(其中分支是11.0,构建系列是11.0.0.1),即...格式。现在,如果我只是将此buildnumber.txt的值更改为“10”(为什么这是我们成功创建的最后一个构建号,当我们之前有HAD 11.0分支时(在我们删除之前)...所以我将buildnumber值提高到10即现在,如果我再次运行构建定义(即队列构建),构建脚本将生成一个新的构建,编号为:11,即构建标签为“TUD_COR_11.0.0.11”。问题在几个SECONDS中解决了。公司中没有人由于这是一个开发分支,因此他们不关心我们(SCM团队)为他们提供的构建号码。他们只是想要一个成功的构建。

答案 1 :(得分:0)

听起来它正在尝试将标签应用于已具有该标签的该文件的版本。如果您使用tf label,它会移动标签,如果可以的话,那么您就是这样做的。

要检查的一件事是工作区中的版本是否是您要标记的版本。否则,请指定versionspec(例如,无论您当前在工作区中拥有什么,以下内容都将标记文件的最新版本):

tf label "$/MyProj/MyFile.cs" /version:T /server:http://tfs:8080

如果您可以发布您正在使用的tf label命令行,那么它也可能会有帮助。

(编辑:上面的tf命令适用于tfs 2005和2008.你需要为tfs 2010指定项目集合而不是服务器。)