在Accurev中“取消推广”文件的最佳方法是什么?

28
我的公司使用Accurev进行源代码控制,虽然它有很多好处,但有一个简单的操作我却无法完成。
通常我们会有人不小心将文件推到了流结构中太远的位置——例如从“开发”流到“发布”流。最佳方法是什么?即如何将旧版本的文件重新加入到“发布”流中,同时保留新版本的文件在“开发”流中?
在“发布”流中执行“Revert to Backed”或其他还原操作会导致旧版本的文件下传到“开发”中,或者会使文件完全消失。
在这种情况下,开发人员必须在流上设置基础时间,或使用命令行工具来检出旧事务才能取回文件。有时涉及的人员并不精通技术,因此这不是一个好的解决方案。
我也考虑过将文件移到“更高级”的流中,进行还原,然后再次交叉推广到较低的流中。但这似乎非常麻烦。
看来Accurev还不够流行,谷歌也帮不了忙,所以我向StackOverflow上的好心人求助——有没有人找到了“Accurevy”的解决方法呢?

2
“降级”计划于2015年2月发布的6.2版本中。 - Martin Ba
4个回答

30
  1. 打开主流浏览器

  2. 右键单击您错误提升的流,并选择“显示历史记录”

  3. 在历史记录浏览器中,右键单击您想要还原的提升并选择“还原”

  4. 它将提示您要将还原结果放到哪个工作区,如果愿意,可以选择从错误提升创建的工作区。

  5. 在您的工作区中,文件现在应该回到了意外提升之前的状态。现在可以将其重新提升到上面的流中。流现在将包含已删除意外提升版本的文件。

  6. 您可以注意到您的工作区不再包含任何相关文件,但是您可能希望将意外提升的文件重新添加到您的工作区中吗?如果是这样,请返回流的历史记录浏览器,在那里右键单击刚刚进行的提升(具有还原编辑的提升),然后选择“还原”。然后可以选择相同的工作区作为目标。

  7. 这些文件现在可能会出现在工作区的默认组中,并且被冲突。因此只需选择全部并进行合并即可。在这里您可能需要接受微不足道的合并。

合并文件后,它们应该出现在您的待处理过滤器中。现在您应该拥有与意外提升之前相同的文件待处理,并且上面的流应该具有与提升之前相同的文件内容。

就是这么简单(讽刺意味)。

史蒂夫


12

AccuRev的审计友好和只追加的特性意味着恢复更改需要重新应用您想要的版本。 直观地,您想向后“1步”。 但在一个只追加的系统中,这实际上意味着向前走并重新应用旧版本。 因此,恢复自然是“向前2步”的过程,而不是“向后1步”。

在大多数情况下,回滚并不经常发生,因此“全局”的“只追加”价值超过了回滚的方案(我个人认为)。

作为一站式一致性解决方案,最准确的方法(正如您提到的)是恢复推广事务。 查看流历史记录,找到不需要的推广,RClick>恢复。 您将需要一个子工作区.. 为什么? 因为执行还原可能需要取消合并。 想想回滚一个中间推广...就像把三明治里的生菜拿出来,需要将顶部和底部的面包圆点合并在一起。 只有在基于事务的系统中,还原可能会包括番茄酱、芥末和芹菜盐等所有更改,并作为单个"撤消"。 因此,如果存在合并,则需要保存合并的更改。 无论如何,即使您只是撤消最近的推广,也只需将更改还原到工作区,进行[偶尔的]合并,并将所有内容推广上去。

长话短说。 在任何CM系统中进行恢复有点像进行手术,因此您可能需要相关人员参与。

退一步。 我倾向于利用AccuRev流在尽早验证代码并在上移之前进行促销。 因此,随着升级越来越高,回滚的机会越少。


5
AccuRev 5.2版本引入了直接在流中还原事务或问题的功能,无需涉及工作区。这对于还原“发布”流中的更改很有用,但不解决您问题的第二部分(将新版本放回“开发”流中)。完整的“取消推广/降级”功能计划在未来发布中实现。 有关版本5.2的更多信息,请访问发布说明:http://www.accurev.com/download/docs/5.2.0_books/AccuRev_5_2_0_Install_Release_Notes.pdf

2

我并不是完全在开玩笑,你可以在本地运行Mercurial,当你遇到这种情况时,回滚你的Mercurial,重新推送到Accurev,然后再将Mercurial向前滚动。我的工作场所有几个开发人员发现使用Accurev非常繁琐,因此这种模式正在逐渐流行。


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