2

動的ビューで多くの操作を実行する必要があるプロジェクトがあります。これらの操作のいずれかが失敗した場合、またはプログラムで何らかのエラーが発生した場合、コミットを取り消すことができる必要があります。

簡単な方法は、単にコマンドをキューに入れ、プログラムが処理を終了したときにキューを実行することです。ただし、コミットを中断し、サーバー上で一貫性のないデータセットを引き起こす例外的なイベントが発生することを懸念しています。

または、言い換えれば、Clearcase 動的ビューで svn スタイルの「変更セット」を作成する方法を探しています。私が使用しているスクリプト言語は Perl です。

アイデア?

4

4 に答える 4

5

ClearCase での操作の原子性はファイル レベルであり、svn変更セット(つまり「リビジョン」) に厳密に相当するものはありません。

ClearCase の変更セットに最も近いものは、(UCM での) アクティビティの概念、またはファイルのコレクションに設定されたラベルです (UCM ベースラインは、事前定義されたセットで移動できないラベルを表すため、実際にはより近いものですファイル -- UCM コンポーネント --)

さて、UCMであろうとなかろうと、私はお勧めします:

  • チェックインを行うブランチをロックします (そうすれば、vob には引き続きアクセスでき、「アトミック」操作中にその特定のブランチに他のバージョンを追加しようとする人は誰もいません)。
  • チェックインを行います
  • ブランチのロックを解除

問題が発生した場合、ブランチがまだロックされている間はct rmver、追加されたバージョンを ' ' することができます。(注: 注意して使用してください: armverは元に戻せません)

  • 注 1: UCM で作業していない場合は、チェックインしたすべてのバージョンを記録して、それらを確認できるようにする必要があります。

  • 注 2: 「ブランチをロックする」と言ったときは、もちろん「あなた以外の全員をロックする」という意味でした ( -nusers yourLogin)。そうすれば、あなただけがチェックインを行うことができます (これは、作業しているブランチ (メインまたは別) の LATEST 内のすべてのファイルに適用されます)。


このアプローチの問題は、クライアント (ブランチの LATEST で動的ビューを持つ他のユーザー) がアトミック トランザクション中に何を見るかということです。
これらは動的ビューであるため、これらのファイルが 1 つずつチェックインされている間、チェックインされたファイルが表示されます。特に 200 個のファイルがあり、すべてのプロセスに 1 分以上かかる場合は、これは適切ではない可能性があります。

1 つの解決策は、これらのクライアント ビューで構成仕様を次のように設定することです。

element * .../myBranch/FREEZED_LATEST
element * .../myBranch/LATEST

アトミックな変更セットのコミットを行っていない場合、ラベルFREEZED_LATESTは存在せず、すべてのクライアント ビューは LATEST と表示されます。すべてのチェックインは、すぐに全員に表示されます。
ただし、アトミックコミット中に次のことができます。

  • 最初に、現在のすべてのファイルにラベル FREEZED_LATEST を設定します (現在は LATEST です)
    。つまり、すべてのクライアントは、アトミック コミット中に特定のバージョンのみを表示します。
  • プロセスを実行します(最後まで、またはロールバックします。どちらの方法でも、ブランチはロックされており、クライアントの構成仕様にはまだ同じ「凍結された」コンテンツが表示されます)
  • ラベルを削除しFREEZED_LATESTます (すべてのクライアントは、アトミック操作の結果として新しい LATEST を確認し続け、独自のチェックアウトで新しいバージョンを作成できます)
于 2009-07-30T16:46:12.617 に答える
2

v7.1.1 では、ClearCase はアトミック コミットをサポートしています。一連のファイルを 1 つのユニットとして扱い、特定の基準に基づいてそれらをチェックインまたはロールバックできます。詳細については、 https://publib.boulder を参照してください。 ibm.com/infocenter/cchelp/v7r1m0/index.jsp?topic=/com.ibm.rational.clearcase.relnotes.doc/topics/c_cc_relnotes_features.htm

于 2010-10-19T22:44:30.493 に答える
0

私は何年も clearcase を使っていません。

先を見越して、ファイルが同期していないかどうかを判断してください。

チェックインする前に、チェックインしようとしているすべてのファイルをロックします。ロックに失敗した場合は、有用なメッセージを表示して、混乱全体を中止します。

チェックインを「削除」できますか? または元に戻して、HEAD が以前のバージョンを参照するようにしますか? チェックインの取り消しを定義します。

一時的なブランチを作成し、チェックインしてから、マージ/リベースできますか (私の用語はここでは失われます)。そうすれば、ロールバックはブランチを殺すことです。私は同僚が clearcase が枝分かれしているという理由で罵倒したことを覚えています。

一般に、アクションのキューイングは優れていますが、キューを使用して潜在的な問題を発生前に特定してください。さらに、アクションとその UNDO 基準を定義して、疑似アトミックではないことをしたい場合は、「これは面倒になる可能性があります」と警告することができます。

于 2009-07-30T16:17:34.687 に答える
0

他のすべてのユーザーをロックアウトします。

サーバーのバックアップを行います。

コミットを行います。

何かがひどくうまくいかない場合は、バックアップから clearcase を復元してください。

于 2009-07-30T16:00:08.607 に答える