特定のバージョンにタグ付けできるかどうか知りたいです。プロジェクトで JCR を使用したいのですが、さまざまなタイプのノードで構成された多くの階層型ツリーがあり、ステージングまたは本番用に一連の変更を行った後にバージョンを保存する必要があります。特定のノードとその子に対して行われたすべての変更が保存されるように、特定のバージョンにタグを付ける方法を知りたいです。
ありがとう!!!
特定のバージョンにタグ付けできるかどうか知りたいです。プロジェクトで JCR を使用したいのですが、さまざまなタイプのノードで構成された多くの階層型ツリーがあり、ステージングまたは本番用に一連の変更を行った後にバージョンを保存する必要があります。特定のノードとその子に対して行われたすべての変更が保存されるように、特定のバージョンにタグを付ける方法を知りたいです。
ありがとう!!!
はい、選択した文字列でバージョン履歴のバージョンにタグを付けることができます。しかし、JCR 2.0 ではそれらを「ラベル」と呼んでいます。
VersionHistory
最初に、チェックインされている特定のノードのを見つける必要があります。
String path = ... // the path to the versioned node
VersionManager versionManager = session.getWorkspace().getVersionManager();
VersionHistory history = versionManager.getVersionHistory(path);
Version
次に、すべてのバージョンを反復処理するか、「ルート バージョン」を取得するか、ベース バージョンを取得することにより、ラベルを付けたい特定のものを見つけることができます。これを行うには非常に多くの方法があるため、これは示しません。
// Find the version ...
Version versionToBeLabeled = ...
次に、このバージョンにラベルを追加できます。ラベルは、1 つのノードのバージョン履歴内で 1 回しか使用できないことに注意してください。そのため、ラベルを追加するときに、既存のラベルを移動する (存在する場合) か、例外をスローするかを選択できます。既に使用されている場合に移動するコードは次のとおりです。
// Add a user-defined label to this version ...
String versionName = versionToBeLabeled.getName();
String versionLabel = "MyLabel";
boolean moveLabel = true;
VersionHistory.addVersionLabel(versionName, versionLabel, moveLabel);
バージョン名は JCR 実装によって決定されるのに対し、ラベルはユーザー定義であることに注意してください。Version
これが、独自のラベルを追加してから、特定のインスタンスを実装で決定された名前ではなくラベルで見つけることが非常に便利な理由です。
Version foundVersion = versionHistory.getVersionByLabel(versionLabel);
Version
もちろん、履歴に特定のラベルが付いているかどうかを調べることもできます。
if ( versionHistory.hasVersionLabel(versionLabel) ) {
// do something
}
または、特定のバージョンにラベルがある場合:
Version version = ...
if ( versionHistory.hasVersionLabel(version,versionLabel) {
// do something
}
特定のラベルを削除することもできます:
versionHistory.removeLabel(versionLabel);
詳細については、JCR 2.0 (JSR-283) 仕様のセクション 15.4 を参照してください。