分散バージョニング環境におけるHelix Coreサーバの利用 (2019.1)

フェッチとプッシュ

フェッチとプッシュは、複数のユーザが同時に作業を行う分散ワークフローにおける重要なコマンドです。これらのコマンドにより、以下に示す主要なタスクを実行することができます。

  • 個人サーバのチェンジリストを共有サーバにコピーする
  • 他の個人サーバからプッシュされたチェンジリストを共有サーバからフェッチする
  • 共有サーバの全体的なリポジトリのサブセットを取得して使用する
  • 2つの個人サーバ間で作業内容をコピーする

管理者は、フェッチとプッシュを使用して、複数の共有サーバ間でチェンジリストをコピーすることもできます。

分散バージョン管理モデルにおけるフェッチとプッシュの位置付けは、従来のHelixサーバ中央サーバモデルにおける同期とサブミットの位置付けと同じです。

クローンとフェッチはすべてのレプリカタイプ(読み取り専用、ビルドファーム、転送レプリカ、エッジサーバ、ワークスペースサーバ、スタンドバイ、転送スタンバイなど)でサポートされます。すべての転送レプリカタイプ(エッジ、転送、転送スタンバイ、ワークスペース)は、プッシュをコミットサーバに自動的に転送することによりプッシュをサポートします。読み取り専用、ビルドファーム、スタンバイの各タイプのレプリカはプッシュを拒否します。

p4 fetchコマンドを実行すると、指定したファイルセットとその履歴がリモートサーバからローカルサーバにコピーされます。p4 pushコマンドを実行すると、指定したファイルセットとその履歴がローカルサーバからリモートサーバにコピーされます。どちらのコマンドの場合も、一部のファイルだけがフェッチまたはプッシュされることはなく、指定したすべてのファイルがフェッチまたはプッシュされるか、いずれのファイルもフェッチまたはプッシュされないという結果になります。

リモートサーバへのファイル転送の開始後にp4 pushコマンドが失敗した場合、それらのファイルはリモートサーバ上でロックされたままになります。p4 openedコマンドはlockedを表示します。他のユーザがこれらのファイルをサブミットすることはできません。p4 pushコマンドをすばやく再試行できない場合は、p4 unlock -rコマンドを使用してリモートサーバ上でファイルをロック解除できます。

p4 pushコマンドは、プッシュを実行しているサーバにサブミットされなかった変更がある場合は使用できません。最初にこれらの変更を再度サブミットするにはp4 resubmitコマンドを使用し、変更を望まない場合はp4 shelve -dで保留ファイルを破棄します。p4 unsubmitおよびp4 resubmitの詳細については、「ローカル履歴をリライトして衝突を解決する」の例を参照してください。

フェッチまたはプッシュの進行状況を監視するには、-Iオプションをコマンドに渡します。

$ p4 -I fetch
$ p4 -I push