0

Java コードを使用して P4 ブランチのロックを取得したいと考えています。Javaを介してそれを達成する方法を知っている人はいますか?

以下のコードを使用します。

IBranchSpec ibranchSpec = underlyingPerforceOptionsServer .getBranchSpec("//Tools/Patch/bin/");
ibranchSpec.setLocked(true);

ここの問題にはibranchSpecすべてのデポが含まれていますが、その理由はわかりません。

setLock の API は、サーバーの更新が完了した後にのみ動作を開始すると述べています。私はそのようなものを使ってみました:

ibranchSpec.Update();

そして、それは以下の例外をスローします。何か案は?

com.perforce.p4java.exception.RequestException: Error in branch specification.
  You cannot use the default branch view; it is just a sample.
4

1 に答える 1

1

あなたが説明している動作は、既存のブランチ仕様ではなく、新しいブランチ仕様で作業しているためです。

しかし、ブランチ仕様とリポジトリ内の一連のファイルを混同するという、よくある混乱に遭遇している可能性があります。

つまり、//Tools/Release/bin/... が //Tools/Patch/bin/... にマップされる方法を説明するブランチ仕様は、//Tools/Patch/bin/内の一連のファイルとは異なります。 ...

一般に、Perforce のワークフローはファイルのセットをロックしません。なぜなら、Perforce の全体的な目的は、多くのユーザーによる作業の同時編集を可能にし、変更をマージして競合の解決を管理できるようにすることだからです。

ただし、特定の時間に誰がいつリポジトリの特定のセクションにチェックインできるかを制御したい高レベルの開発ワークフローがある場合、それは絶対に合理的です。

私の経験では、これを行う最善の方法は、Perforce保護メカニズムを使用することです。つまり、リポジトリのさまざまなセクションと、誰がどのセクションに送信できるかを説明する保護ファイルを作成します。ユーザー グループを使用して一連のユーザーを説明し、全体的な保護テーブルを適度に単純に保つようにしてください。

次に、ユーザーのグループからリポジトリのセクション (「ブランチ」) を「ロック」または「ロック解除」するには、保護テーブルを更新して、そのグループへのアクセス許可を拒否 (「ロック」) または許可 (「ロック解除」) します。そのブランチに書き込みます。

この関連する質問には、その回答にテクニックの優れた説明があります: Locking a branch in perforce?

于 2012-08-30T13:45:08.553 に答える