6

我试图了解 TFS 2008(和 2010,如果不同的话)如何存储和传达变更集中一组更改的详细信息。

现在,当我提交 Subversion 托管项目时,客户端会将差异发送到服务器。因此,如果我添加了一个文件并在另一个文件中更改了几行,它会发送类似 "Added file A.txt, put 2 lines "A" "B" into B.txt" 的内容。这意味着我可以取消修订,因为差异是可逆的——“删除文件 A.txt 并从 B.txt 中取出两行”。很确定它也与 git 相同。

我有一种感觉,TFS 不会以这种方式存储变更集(基于谣言和我不能轻易回滚修订等的事实)。

我相信会发生这种情况:如果我在变更集中更改了文件 A、B 和 C,那么实际存储在变更集中的是文件 A、B、C 的全新副本。不仅仅是差异。

我在这个假设中正确吗?作为商业软件,我很可能相信这些信息不可用,但我想我会问,因为谷歌搜索没有产生任何结果!

作为推论:TFS 变更集存储在哪里?我知道 SQL 服务器用于一些存储... changsets 吗?

我们目前正在使用 TFS 2008,但知道 2010 年的答案也很有用,因为我认为有升级计划。

4

1 回答 1

11

TFS stores all changeset data in a SQL Server database. It stores the code from the most recent changeset in its entirety. It then stores a diff to the previous version. One of the benefits of storing it all in SQL Server is that it gains the "all or none" saving capability that is provided by transactions.

As for WHERE it's stored, you can check out this blog entry http://blogs.msdn.com/b/bharry/archive/2009/04/19/team-foundation-server-2010-key-concepts.aspx

于 2011-07-04T14:38:10.263 回答