Git 什么是Accurev工作原理的一句话解释?

Git 什么是Accurev工作原理的一句话解释?,git,accurev,Git,Accurev,我了解git、Subversion、CVS和无数其他源代码控制系统 我已经开始使用Accurev,这让我很困惑 我认为我需要建立一个心智模型,将其与其他SCM联系起来。最好是相对于git,因为我最了解git 我将git解释为“一个提交的有向图,其中提交是一个差异、一个父(或多个父)散列以及散列本身。”您可以很容易地从这里开始解释诸如重新基和合并的真正含义、快进与实际合并等概念。我发现在大约15-20分钟内教新用户复杂的git概念很容易 我真的很想了解Accurev在这个层面上的情况。所以 什么是

我了解git、Subversion、CVS和无数其他源代码控制系统

我已经开始使用Accurev,这让我很困惑

我认为我需要建立一个心智模型,将其与其他SCM联系起来。最好是相对于git,因为我最了解git

我将git解释为“一个提交的有向图,其中提交是一个差异、一个父(或多个父)散列以及散列本身。”您可以很容易地从这里开始解释诸如重新基和合并的真正含义、快进与实际合并等概念。我发现在大约15-20分钟内教新用户复杂的git概念很容易

我真的很想了解Accurev在这个层面上的情况。所以

什么是Accurev工作原理的一句话抽象,可以解释它的行为方式?

我想让我的心智模型回答一些问题:

  • 当我“保留”一些文件,然后“升级”它们时会发生什么
  • 如果我不升级刚才保存的相同文件,会怎么样
  • 为什么在发生非冲突(又称重叠)更新时,历史有时会被错误归因?特别是,这让人想起颠覆的失败模式,从我听到的基本解释来看,我认为Accurev不应该存在这种模式
  • 为什么差异几乎从不包含我期望的内容?我相信实际情况是,diff-from-basis向我展示了与当前(移动)父流的diff,但我真正想要的只是看到自上次更新以来我所做的更改
我将git解释为“一个提交的有向图,其中提交是一个diff、一个父(或多个父)散列以及它本身的散列。”

git存储库是FWIW,一个历史树森林,其中提交叶子是目录和文件的树(提交元数据加上)。没有区别,Git中没有,至少在概念上是这样。如果存储引擎碰巧进行了deltification,那就另当别论了

至于AccuRev,我看了(链接仅供参考,不是广告),它看起来很像您的平均时间安排的SCM历史树(分支)。带有水波图标的项目是分支头,黄色文件夹状的项目是工作副本。当演示者移动工作副本时,他似乎正在对其下属的所有工作副本进行重基(真糟糕!想想合并冲突吧!)。带有三个绿点的图标(问题列表)将是一个提交列表,当您复制它时,它将被选中


在一句话中:通过之前对cvs/svn/git的经验,没有什么是你不知道的-我想说的是继续前进。

我会根据你的Q的风格给你一句技术(非商务)的话:


AccuRev采用面向对象的方法来建模软件配置。就这么简单,太棒了!特别是如果您正在建模工作流,或者更好,设置连续交付(另一个主题)。但我已经看到了,很多人拒绝使用这种强大的技术和数据模型方法,因为他们无法超越传统的“分支”,如cvs、svn、p4、cc和无限。最好的类比是将一系列AccuRev流与clearcase中配置规范中的规则进行比较。。。(注意:这只是一个类比)但更强大,因为流是维护基于时间的配置和历史的一流实体

理解AccuRev的诀窍是,尽管任何给定的“流”表示完整的配置(即,您可以检查它),但该流的实际内容是通过聚合任何本地文件/dir更改、来自父级的任何更改(从树上到树的最顶端)来动态确定的,在树的最顶端收集其余文件。所以,每当你看到一棵“树”的溪流,它们不是树枝。。。而是一系列基于继承的配置,其中顶层流类似于“超类”,所有的[grand]子类都是[sub]子类。在开发、集成、QA等过程中,新的文件/目录更改会升级到树上

戴夫

Accurev是一个后起之秀。
(Accurev模型与UCM有一些相似之处,以及)

流是一种配置,即需要工作(编译、测试和/或调试等)的标签(只读组件)或文件(可写组件)列表

这就是Accurev显示为的原因


If为每个开发人员提供一个私有流(工作区流),您可以从中升级到更常见的流。每次升级都会更新父流的配置(这同样只是您需要工作的内容列表)。

由于其他几个人试图回答您的直接问题-Dave的回答最简洁、最准确-我将尝试一下您的要点:

  • 当我“保留”一些文件,然后“升级”它们时会发生什么

    保留一个文件将创建该文件的新版本,仍然是您工作区的私有版本。非常适合自主编码,创建分流点,只是简单的私有开发。您可以在将来的任何时候从您自己或任何其他贡献者恢复到以前保存的任何文件版本。当您对当前版本(编译、构建、测试等)感到满意时,可以将其升级到父流中,从而将其他人暴露在您的版本中,而不会像您在签入时提交时那样有破坏的风险

  • 如果我不升级刚才保存的相同文件,会怎么样

    同样,完全的工作空间自主权。如果你是那种能够跟踪你正在做的事情的开发人员,你可以一次处理100个文件。你可以不宣传,全部宣传,一个宣传,一些宣传,这并不重要,你可以在你的时间表上宣传

  • 为什么历史有时会有错误的属性