免責事項:私が最もよく理解しているソース管理システムはSVNです。これにより、レポやチェックアウトなどの用語の使用法が色付けされます。また、私は日常的にAccurevを使用していますが、しっかりと把握しているコアコンセプトから遠く離れることはありません。
1つの文(アスタリスク付き): Accurevは、ストリーム/ワークスペースごとに変更されたファイルの改訂履歴を保持し、各ストリームが透過的に更新されている間に(ストリーム内の)異なるバージョンのコードを開発できるようにする時系列のリポジトリです。親および子*ストリームからのコアコード。
(*)子ストリームが親ストリームへの変更をプロモートした場合にのみ、子ストリームによってストリームが更新されます。
Accurevの主な利点は、さまざまなバージョンのコードを簡単に維持できることです。あなたがそれを理解したいのであれば、私はあなたが精通している言語で再定義された簡単な抽象化や用語を探しません。例と用語の穏やかな説明を探します。残念ながら、私は自分が知る必要があることしか知りませんが、それを試してみます...
(後でワークスペースに移動します。この時点では心配しないでください。)
あるストリームを別のストリームから親として作成する場合、SVNブランチを作成して子ストリームを作成したようなものですが、(すばらしい)違いは、親ストリームまたは子ストリームを更新するたびにSVNマージが処理されることです(または競合が存在する場合はアラートが表示され、手動で解決する必要があります)。
ストリームCompanyStreamから始めたとしましょう。コードベースはそのストリームによって管理され、ファイルに加えた変更の履歴があります。次に、その下に2つの子ストリームChildStream1、ChildStream2を作成することにします。CompanyStream内のファイルに加えられた変更は、両方の子ストリームに細流化されるため、CompanyStreamから継承した最新のコードが常に含まれます。(リビジョン変更の継承はAccurevの主要な概念です。)一方、ChildStream1で1つのベンダーに固有の開発を行っており、ChildStream2で別のベンダーに固有の変更を行っています。ChildStream1と2のどのコードをCompanyStreamにプロモートするかを選択的に決定できますが、CompanyStreamで行われた変更は、両方の子ストリームに表示する必要があります。
ストリームの視覚化は次のようになります。
CompanyStream-
|-ChildStream1
|-ChildStream2
Accurev Overlap =ストリームを更新してから、親ストリームのファイルが変更されました。親ストリームが自分の上にあることを視覚化し(これがクライアントに表示される方法です)、そのストリームは水平方向に進行しているため、現在の時点と重なっています。
SVNからAccurevの概念へのクイックマッピング:
SVNチェックイン-SVNチェックアウトのプロモート
-アンカー(何かを固定するとWIPになります-作業中)
SVN更新-更新
Accurevワークスペース
ワークスペースについてはまだ触れていません。ワークスペースは、ハードドライブ上のコードを表します。ワークスペースは、履歴を持つことができ、行った変更を追跡できるという点でストリームに似ています。(これはKeepの機能です。Keep操作中に指定したファイルのスナップショットをワークスペースの履歴に保存します。これらのファイルのスナップショットにいつでも戻すことができます。その結果、ワークスペースを次のように表示することもできます。独自のプライベートストリーム。これは、内部のコードに加えられた変更の記録です。)
ストリームは、リビジョンの変更と何が起こったかの履歴を表す抽象的な概念です。ストリームとワークスペースは、親ストリームからコードを継承します。ただし、ストリームとは異なり、ワークスペースに子ストリームまたは子ワークスペースを含めることはできません。ワークスペースは木の上の葉のようなものです。ストリームは枝のようなものです。
- 一部のファイルを「保持」してから「プロモート」するとどうなりますか?
ストリームにプロモートします。あなたはワークスペースにとどまります。プロモートされた変更は、ストリームを表示できるすべての人に表示されます。保持された変更は、ワークスペースの所有者であるあなただけに表示されます。
Keptファイルには、ワークスペースにスナップショットがあります(それらに戻したい場合に備えて)。プロモートされたファイルには、プロモートされたストリームに(いわば)スナップショットが含まれます。大きな違いは、プロモートされた変更が、そのストリームを継承するすべてのストリームまたはワークスペースにトリクルダウンすることです。
- 保存したファイルと同じファイルをプロモートしないとどうなりますか?
その後、それらはあなたのワークスペースにのみ存在します。また、プロモートを実行すると、Accurevが最初にキープを実行すると思います(したがって、ワークスペースとプロモート先のストリームの両方でファイルの変更の記録があります)。
- 競合しない(重複する)更新が発生したときに、履歴の属性が誤って表示されることがあるのはなぜですか?これは特に、Subversionの障害モードを彷彿とさせます。私が聞いた基本的な説明から、Accurevには存在すべきではないと思います。
例を挙げていただけますか?Accurevのファイルバージョン管理についての私の理解は少し曖昧です。バージョン属性は、最新の変更がプロモートされた(保持されていない)ワークスペースまたはストリームによって割り当てられると思います。いくつかのストリーム継承関係があり、ファイルをトレースするまで正しくないように見える属性がファイルに含まれている可能性があります。
- なぜdiffには、私が期待するものがほとんど含まれていないのですか?何が起こっているのかというと、基本に対する差分が現在の(移動している)親ストリームに対する差分を示していると思いますが、私が本当に望んでいるのは、最後に更新してから行った変更を確認することだけです。
次に、ベーシスに対してではなく、「バック」に対して差分を実行します。
私にとって有効な単純な構成は次のとおりです。私は常に、いくつかのパブリック開発ストリームから独自のプライベートストリームを作成します。次に、チェックインしたい(または元に戻せるようにする)変更を加えると、自分のストリームにプロモートします。私は自分のワークスペースで作業を続けています。自分のワークスペースを以前に行ったことや自分の上で起こっていること(他の人が行った変更)と比較したい場合は、Backedと比較します。
申し訳ありませんが、これはとても長いです。うまくいけば、それが役立つ...