Accurev中diff against basis和backing的区别是什么?

7
Accurev中diff against basis和diff against backing的区别是什么?
1个回答

20

我从你在本论坛的其他帖子中推断,这里的上下文是针对您的工作空间中的文件与备份或基础版本之间的差异比较。

针对基础版本进行差异比较将会比较您当前工作空间中的文件与在您进行更改之前开始工作的版本。例如,您更新了您的工作空间,开始编辑 foo.c 文件(属于“备份”状态),对其进行若干修改,然后执行针对基础版本的差异比较。它将比较您的修改与您开始使用的版本,不管父流现在有哪些变化。也就是说,它只会显示与您的工作相关的更改。

针对备份进行差异比较将会比较您当前工作空间中的文件与当前位于您的备份或父流中的文件。以前面的例子为例,您已经对 foo.c 进行了修改,但另一位开发人员也在您开始工作后将自己的修改推送到了父流中的 foo.c 中。运行针对备份的差异比较将会比较您当前的文件和父流中的文件,因此您也将与另一位开发人员的修改进行比较,从而查看一个预合并版本。

如果没有其他人对 foo.c 进行了修改,则针对备份和基础版本的差异比较将产生相同的结果。

最后,对于任何给定的文件,您可以运行“历史记录”->“浏览版本”,比较以前存在过的任意两个版本,如果备份或基础版本不是您要查找的特定比较。

希望这可以帮助您,
~詹姆斯


2
我理解你刚才所说的意思是,在一个文件被推广之后,如果有多个人对该文件进行了修改,则无法查看某个开发人员对该文件所做的更改。在非工作区流中,将差异与备份进行比较没有任何意义,而将其与基础进行比较则包含了每个人的更改。我认为这是根本性的问题。不过,你的回答很好。谢谢! - Otto
嘿 Otto,我想说你是正确的,但只是在某种程度上。考虑任何给定流的上下文;它是时间点上代码的动态配置。 Backed将指其与父流的差异。这使您可以仅将“已接受”的更改向上推广,如果您愿意,则为多阶段集成,因此diff是针对该父流的上下文。出于必要性,我们只能在Diff菜单上显示几个选项;如果您想查看特定开发人员的更改,您可以始终使用浏览版本窗口选择任何版本以进行差异比较... - jtalbott
我听到了,这种限制是为了给发布经理带来其他的灵活性。但问题在于如何确定要比较哪些版本。你可以在Subversion中手动创建标签来标记分支的开始和结束,但我认为同样的机制不能应用于这里,因为开始和结束是由父流确定的。而且我无法递归地比较整个子文件夹,所以我不得不猜测,逐个验证我的猜测,如果猜错了就重新开始。 - Otto
1
要明确一点,我认为问题在于“推广”和“代码审查”的顺序。我们可能需要先进行“代码审查”,然后再进行“推广”,但我并没有看到明确的设置方式。此外,我们真的不希望开发人员在等待他们的更改被审查时被耽搁,我认为这是没有新的工作流程理解的最终结果。 - Otto
嗯,如果代码审查是核心问题,我相信你们使用变更包 - 将文件链接到问题记录。每个变更包都将明确知道与每个链接的文件相关的头和基础。您可以打开问题记录并针对基础进行差异验证,以验证与问题相关的仅更改,而不管谁提交了它们。而且,无论更改已升级到哪个流,您都可以在任何地方执行此操作... - jtalbott

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接