Team Foundation Server - TF获取变更集编号

Syl*_*via 6 tfs

我正在尝试编写一个非常轻量级的"构建"脚本,它基本上只能从TF获取一些文件(基于Changeset编号).然后我将在SQLCMD中运行这些文件.

我正在使用这个:

tf.exe get c:\tfs\  /version:c2681  /force /recursive
Run Code Online (Sandbox Code Playgroud)

但是,这似乎得到了一切,而不仅仅是变更集#2681中的文件.我希望能够将它指向我的tfs工作区的根,给它一个变更集编号,并让它只更新那些少数特定文件.此外,它似乎是越来越旧的版本(也许是在更改集#2681签入时的当前版本)?

有没有办法获得那些特定的文件,而不需要在tf get itemspec中专门调用它们?

编辑:我实际上必须添加/ force选项,以便它可以做任何事情.如果没有强制,它甚至不会从服务器中检索我在本地删除的文件,这肯定在变更集中.

谢谢,西尔维娅

Ric*_*ard 2

TFS 服务器跟踪每个工作区包含的内容1。使用非 TFS 客户端命令(无论是tf.exe团队资源管理器还是其他客户端)在本地进行的任何更改都将导致 TFS 服务器的视图与实际存在的视图之间存在差异。

\n\n

各种客户端上的强制选项只会消除这种不一致(有效地重置客户端上的内容和服务器认为存在的内容)。

\n\n

当您针对指定版本(无论是日期、变更集还是标签)执行获取时,您将获得截至并包括该时间点的所有内容,无论当时是否没有具体更改。所以得到

\n\n
tf get /version:D2012-03-30\n
Run Code Online (Sandbox Code Playgroud)\n\n

将在该日期或之前获得更改。

\n\n

要仅获取变更集中包含的项目,您必须自己做一些工作,使用命令获取变更集内容的列表并解析该列表以执行正确的操作(变更集不仅可以包含更新和内容)添加文件2 )。

\n\n

在我看来,如果您想在影响特定 TFS 文件夹的每个变更集上执行构建,您最好考虑使用 TFS Build,这就是完全做到 \xe2\x80\x93 避免重新发明轮子 \xe2\ x80\x93 并专注于构建部分(其他连续构建解决方案可用)。

\n\n
\n\n

1这将随着 TFS11本地工作区而改变。

\n\n

2例如。处理文件夹的重命名将需要一些不简单的工作。

\n