3

这是我的用例:

我从一个项目 XYZ 开始,为此我创建了一个工作项,并且我经常签到,总共轻松签到 10 到 20 个。所有代码更改都将经过代码阅读和代码审查。

更改集不是连续的 - 其他人在我的更改之间签入,尽管他们不太可能接触完全相同的文件。

所以......在项目结束时,我对“总差异”感兴趣 - 就好像我有一次签到来完成整个项目。理论上这是可以计算的。从与工作项关联的更改集列表中,您可以获得所有受影响文件的列表。然后,该算法可以聚合每个文件的单个差异并将它们组合成一个。由于其他人重命名了文件,或者非常接近地改变了周围的东西,或者在与我相同的功能中,纯总差异可能是不可计算的。在那种情况下......我想总差异也可以包括非我的这些变化,并警告我这个事实。

我会发现这非常有用,但我不知道如何在实践中做到这一点。Visual Studio 2008/2010(和/或 TFS 服务器)可以做到吗?是否有其他源代码控制系统能够做到这一点?

谢谢。

4

4 回答 4

3

您当然可以自己计算“总差异”——在您第一次提交之前从修订版中创建项目的一个分支,然后将所有变更集合并到其中。

我不认为这在一般情况下真的是可计算的 - 只有连续的变更集才能像这样自动合并。说其他人“不太可能”在交错提交中触及您正在处理的文件并不能削减它,您需要保证能够自动化此类事情。

于 2010-04-21T16:03:10.377 回答
3

如果您希望能够轻松地做到这一点,您应该在自己的分支上工作。


正如 Mahesh Velaga 在另一个答案中评论的那样,为显示或合并目的生成差异信息的能力是您的版本控制系统提供的功能。如果您能够通过挑选非连续变更集来计算差异,那么从逻辑上讲,您也可以在单个操作中合并这些更改。 但这不受 TFS 支持。 所以我强烈怀疑TFS也不支持精心挑选的差异信息的构建。其他版本控制系统(我想到了 git、mercurial、darcs)可能对这样的东西有更多的支持;我不确定。

根据我在 TFS 版本控制论坛上阅读他们的答案,我认为他们对此的建议是首先创建一个您自己的分支来完成这项工作:然后变更集将在该分支上连续并创建“总差异”将是微不足道的。因为听起来您无论如何都在开发一个独立的功能(否则只有您的更改的差异将毫无意义),您应该考虑为它建立一个独立的分支,无论您的版本控制系统是 TFS 还是其他东西。

另一种方法是在事后构建这样一个分支的样子,这基本上就是 Jim T 的回答所建议的。如果您的团队非常热衷于在同一个厨房工作的每个人,您可能更喜欢这种方法。但正如您已经意识到的那样,事情可能会变得一团糟。

于 2010-04-25T06:06:15.630 回答
0

创建两个工作区。获取指定日期的文件的特定版本,或者到这两个工作区上的这两个变更集。现在使用比较工具比较文件夹。Araxis 合并是最好的。

于 2010-04-28T11:49:01.607 回答
0

听起来您需要一个支持变更集的工具(更改多个文件并一次提交所有文件)而不是单独提交每个文件

看看sourcesafe 和 mercurial 之间的比较(免费,您可以找到将其与 Visual Studio 集成的工具)

于 2010-04-28T11:49:17.343 回答