我试图了解TFS 2008(以及2010年是否不同)如何存储和传达变更集中一组更改的详细信息。
现在,当我提交Subversion托管项目时,客户端将差异发送到服务器。因此,如果我添加了一个文件并在另一个文件中更改了几行,则会发送类似“添加文件A.txt,将2行”A“”B“写入B.txt”的内容。这意味着我可以退出修订,因为差异很可逆 - “删除文件A.txt并从B.txt取出两行”。很确定它与git也一样。
我觉得TFS不会以这种方式存储变更集(基于谣言以及我无法轻易回滚修订等的事实)。
我认为发生的是: 如果我在变更集中更改了文件A,B和C,那么实际存储在变更集中的是文件A,B,C的全新副本。不仅仅是差异。
我在这个假设中是否正确?作为商业软件,我完全相信这些信息不可用,但我想我会问谷歌搜索什么都没有!
作为推论:TFS变更集存储在哪里?我知道SQL服务器也用于某些存储......也是一样的变种?
我们目前正在使用TFS 2008,但了解2010年的答案也很有用,因为我认为有升级的计划。
答案 0 :(得分:11)
TFS将所有变更集数据存储在SQL Server数据库中。它完整地存储来自最新变更集的代码。然后它将diff存储到以前的版本。将它存储在SQL Server中的一个好处是它获得了事务提供的“全部或全部”保存功能。
至于存储的位置,您可以查看此博客条目http://blogs.msdn.com/b/bharry/archive/2009/04/19/team-foundation-server-2010-key-concepts.aspx