チェンジリストに関連するタスク

このセクションでは、チェンジリストの操作方法について説明します。

ディポ内のファイルを変更するには、それらのファイルをチェンジリストで作業状態にし、ファイルを変更してからチェンジリストをサブミットします。 チェンジリストには、ファイル、そのリビジョン番号、およびファイルに対して行われる操作のリストが含まれています。 サブミットされていないチェンジリストは、作業中チェンジリストと呼ばれます。

チェンジリストのサブミットは、すべて行うかまったく行わないかの操作になります。つまり、チェンジリスト内のすべてのファイルがディポで更新されるか、または、エラーが発生した場合にはどのファイルも一切更新されません。 この方法により、複数のファイルに影響するコード変更が同時に行われるようになっています。

Helix Coreは、チェンジリストに番号を割り当てるほか、デフォルトチェンジリストを管理します。デフォルトチェンジリストにはサブミットの際に番号が付けられます。 複数のチェンジリストを作成して作業を整理することができます。 例えば、あるチェンジリストには新機能を実装するために変更されるファイルを入れ、別のチェンジリストにはバグ修正を含めることもできます。 ファイルを作業状態にすると、コマンドラインで-cオプションを使用して既存のチェンジリスト番号を指定しない限り、そのファイルはデフォルトチェンジリストに置かれます。 例えば、チェンジリスト番号4でファイルを編集し、サブミットするには、p4 edit -c 4 filenameを使用します。 ファイルをデフォルトチェンジリストで作業状態にするには、-cオプションを省略します。

また、チェンジリストを保留して、ユーザ自身での使用または別のユーザによるレビューを目的として進行中の作業を一時的に保存しておくことも可能です。 ファイルを保留することにより、ファイルを正式にディポにサブミットせずに、共有サーバに一時的にキャッシュすることができます。

他のユーザの操作内容によって、チェンジリストのサブミットの際に、Helixサーバがチェンジリストの番号を付け替える場合があります。チェンジリストの番号が付け替えられた場合、元の番号が別のチェンジリストに割り当てられることはありません。

[Type:]フィールドをpublicからrestrictedに変更することにより、チェンジリストの可視性を制限することができます。 一般に、チェンジリストがrestrictedである場合、チェンジリスト内の1つ以上のファイルに対してlistアクセス権限を持つユーザに対してのみ、チェンジリストの説明が表示されます。

チェンジリストをディポにサブミットする際に、チェンジリスト内のファイルをどのように制御するかについては、サブミットオプションを設定するを参照してください。

作業中チェンジリストをサブミットする

作業中チェンジリストをサブミットするには、p4 submitコマンドを発行します。 p4 submitコマンドを発行すると、フォームが表示され、チェンジリストにあるファイルがそこにリストされます。 このリストからファイルを削除することもできます。 リストから削除したファイルは、サブミットまたは復元を行わない限り、デフォルトの作業中チェンジリスト内に作業状態のまま残ります。

デフォルトチェンジリストで作業状態にされている特定のファイルをサブミットするには、p4 submit filenameコマンドを発行します。 ファイルの集合を指定するには、ワイルドカードを使用します。 例えば、デフォルトチェンジリストで作業状態にされているすべてのテキストファイルをサブミットするには、p4 submit "*".txtと入力します。 (エスケープコードとして引用符を*ワイルドカードの前後に付けて、ローカルコマンドシェルにより解釈されないようにしてください)。

チェンジリストフォームを保存してテキストエディタを終了すると、チェンジリストがHelixサーバにサブミットされ、ディポ内のファイルが更新されます。 チェンジリストが正常にサブミットされると、そのチェンジリストを変更できるのはHelix Core管理者のみとなり、変更可能なフィールドはコメントおよびユーザ名のみになります。

デフォルトチェンジリストのサブミットの際にエラーが発生した場合、Helix Coreにより、ユーザがサブミットしようとしたファイルが含まれている番号付チェンジリストが作成されます。 問題の修正後、-cオプションを使用して番号付チェンジリストをサブミットしなければなりません。

Helix Coreは、編集目的で作業状態にしたファイルを書き込み可能にして、それらのファイルを含むチェンジリストのサブミットが成功したときに書き込み禁止にします。 Helix Coreによるワークスペース管理と衝突しないようにするため、ファイルの書き込み権限を手動で変更しないでください。

チェンジリストをコミットする前に、p4 submitは少しの間、サブミットされるすべてのファイルをロックします。 ロックもサブミットもされないファイルが存在する場合、そのファイルは番号付き作業中チェンジリストにおいて作業状態のままになります。 デフォルトでは、サブミット操作に失敗したファイルは、submit.unlocklocked構成可能変数が設定されていない限り、ロックされたままになります。 サブミットに失敗した場合、たとえサブミット前に手動でロックされていたとしても、submit.unlocklockedが設定されていれば、ファイルのロックは解除されます。

番号付きチェンジリストを作成する

番号付きチェンジリストを作成するには、p4 changeコマンドを発行します。 このコマンドにより、チェンジリストフォームが表示されます。 コメントを入力し、必要な変更を行ってからフォームを保存し、エディタを終了します。

デフォルトチェンジリストで作業状態になっているすべてのファイルが新しいチェンジリストに移動します。 テキストエディタを終了すると、チェンジリストに番号が割り当てられます。 ファイルをこのチェンジリストから削除すると、それらのファイルはデフォルトのチェンジリストに戻ります。

Example   複数のチェンジリストを使用して作業を行う

ブルーノは2つのバグ修正を行っており、それぞれの修正を別のチェンジリストにサブミットする必要があります。 そこで1番目の修正に対するファイルの最新リビジョンを同期し、デフォルトチェンジリストでそのファイルを編集目的で作業状態にします。

C:\bruno_ws> p4 sync //JamCode/dev/jam/*.c
[list of files synced...]

C:\bruno_ws> p4 edit //JamCode/dev/jam/*.c
[list of files opened for edit...]

ここでブルーノはp4 changeコマンドを発行して、チェンジリストフォームにコメントを入力します。 ファイルを保存してエディタを終了させると、Helix Coreにより、ファイルを含む番号付きチェンジリストが作成されます。

C:\bruno_ws\dev\main\docs\manuals> p4 change

    [Enter description and save form]

Change 777 created with 33 open file(s).

ブルーノは、2番目のバグ修正に対しても同様に、p4 syncp4 editp4 changeを実行します。 このようにして、各修正に対して1つずつ、合計で2つの番号付きチェンジリストが作成されました。

サブミット済みチェンジリストに割り当てられる番号は、チェンジリストがサブミットされた順番を表します。 チェンジリストがサブミットされるとき、以下の例で示すように、Helix Coreによって番号が振り直される場合があります。

Example   チェンジリスト番号の自動付け替え

ブルーノは、チェンジリスト777を使用して作業していたバグの修正を完了しました。 そのチェンジリストを作成した後に、ブルーノは別のチェンジリストをサブミットし、他の2人のユーザもチェンジリストをサブミットしました。 ブルーノがp4 submit -c 777を実行してチェンジリスト777をサブミットすると、次のようなメッセージが表示されます。

Change 777 renamed change 783 and submitted.

番号付きチェンジリストをサブミットする

番号付きチェンジリストをサブミットするには、p4 submitコマンドの発行時に-cオプションを指定します。 デフォルトのチェンジリストをサブミットするには、-cオプションを省略します。 詳細については、『P4コマンドリファレンス』のp4 submitコマンドに関する説明を参照してください。

注意

並列サブミットを使用すると、パフォーマンスが大きく向上します。 詳細については、「P4コマンドリファレンス」のp4 submitコマンドの解説を参照してください。

サブミットした変更内容を取り消す

バージョン管理機能の重要な利点の1つとして、不要な変更内容を取り消すことがでるという点が挙げられます。誤ったチェンジリストによる影響を取り消すことも、既存の正しいチェンジリストにロールバックすることもできます。

これを行うには、p4 undoコマンドを使用します。 詳細については、『P4コマンドリファレンス』のp4 undoコマンドに関する説明を参照してください。

チェンジリストを保留する

Helix Coreの保留機能により、チェンジリストをディポにチェックインすることなく、自分のファイルのコピーを他のユーザが一時的に使用することができます。

保留機能は、変更をチェックインする前にタスクを切り替えたり、クロスプラットフォームテストを実行したりする個々の開発者にとって有効です。 また、保留機能により、チームに変更を容易に引き継ぐことやコードレビューを実行することが可能です。

Example   チェンジリストを保留する

アールは、UNIXプラットフォームでcommand.cファイルを変更しました。アールは、自分が行った変更を他のメンバーが確認し、テストして欲しいと考えています。

$ p4 edit //Acme/dev/command.c
//Acme/dev/command.c#9 - opened for edit
...

$ p4 shelve
Change 123 created with 1 open file(s).
Shelving files for change 123.
edit //Acme/dev/command.c#9
Change 123 files shelved.

作業中チェンジリストが作成され、保留されたバージョンのcommand.cがサーバに格納されます。 command.cファイルはアールのワークスペースに編集可能な状態で残されているため、アールはこのファイルでの作業を続行することも、自分が行った変更を元に戻して他の作業を行うこともできます。

保留されたファイルは、それらを保留したときのチェンジリスト内で作業状態のまま残されます (既存の保留状態のチェンジリストにファイルを追加するには、最初にそのファイルを当該チェンジリストで作業状態にする必要があります)。ユーザは保留されたファイルに影響を与えることなく、ワークスペース内のファイルへの作業を続行することができます。 保留されたファイルは、他のユーザが所有するワークスペースも含め、他のワークスペースに同期させることができます。 例:

Example   コードレビューのためにチェンジリストの保留を解除する

アールは、自分がチェンジリスト123で保留したバージョンのcommand.cに対し、コードレビューとクロスプラットフォームでの互換性のチェックを依頼しました。 ブルーノはWindowsコンピュータを使用しているため、次のように入力します。

C:\bruno_ws\dev> p4 unshelve -s 123 //Acme/dev/command.c
//Acme/dev/command.c#9 - unshelved, opened for edit

ブルーノがWindows環境でテストを行っている間に、アールは他の作業を続行します。

ファイルを保留すると、保留状態のバージョンは、他のユーザがワークスペースで実行するコマンド(他の作業を行うためにファイルを元に戻す操作も含めて)の影響を受けなくなります。

Example   他のユーザにファイルを引き継ぐ

アールのバージョンのcommand.cはUNIX上で動作しますが、ブルーノがcommand.cのクロスプラットフォーム互換性をチェックしたところ、バグが発見されました。 ここからはブルーノが作業を引き継ぐため、アールは自分のワークスペースを元に戻して別の作業を行うことができます。

$ p4 revert //Acme/dev/command.c
//Acme/dev/command.c#9 - was edit, reverted

command.cの保留されたバージョンは依然としてアールの作業中チェンジリスト123から入手できるため、ブルーノはそれを新しいチェンジリストであるチェンジリスト124で作業状態にします。

$ p4 unshelve -s 123 -c 124 //Acme/dev/command.c
//Acme/dev/command.c#9 - unshelved, opened for edit

ブルーノが作業を完了したら、p4 reshelveコマンドを使用して、さらにレビューを行うためにファイルを(アールのチェンジリスト123ではなく自分のチェンジリスト124で)再度保留するか、または保留されたファイルを破棄し、p4 submitコマンドを使用して自分のワークスペース内のバージョンをサブミットすることができます。

p4 submitコマンドには-eオプションがあり、これを使用すると保留されたファイルを直接チェンジリストからサブミットできます。 保留状態のチェンジリストにあるすべてのファイルが最新であり、衝突が解決されている必要があります。 ストリームターゲットに保留されているファイルには、その他の制限が適用される場合があります。詳しくは、「P4コマンドリファレンス」を参照してください。 (これらの制限に対処せずに済むように、チェンジリストをサブミットする前に、保留状態のファイルをいつでも新しい作業中チェンジリストに移動することができます)。

Example   変更をサブミットする前に保留状態のファイルを破棄する

Windowsでのクロスプラットフォーム対応の変更が完了したため、チェンジリスト124をサブミットする準備ができました。 ブルーノはp4 shelve -dを使用して、保留されたファイルを破棄しました。

C:\bruno_ws\dev> p4 shelve -d -c 124
Shelve 124 deleted.

これにより、保留されたチェンジリスト内のすべてのファイルが削除されます。 これで、チェンジリストをサブミットできるようになりました。

C:\bruno_ws\dev> p4 submit -c 124
Change 124 submitted.

ブルーノがチェンジリスト124でファイルを保留し、アールがそのファイルを保留解除して元のチェンジリスト123に戻し、チェックインを完了させることもできます。

チェンジリストに関する情報を表示する

チェンジリストの簡潔な情報を表示するには、p4 changesコマンドを使用します。 詳細な情報を表示するには、p4 describeコマンドを使用します。 以下の表に、いくつかの便利なレポートコマンドとオプションを記載します。

コマンド Description

p4 changes

すべての作業中チェンジリスト、サブミット済みチェンジリスト、および保留状態のチェンジリストの一覧を表示します。チェンジリストあたり1行の簡単なコメントが付きます。

p4 changes -m count

レポートされるチェンジリストの数を、最後に指定されたチェンジリストの数に制限します。

p4 changes -s status

特定の状態のチェンジリストだけを一覧表示します。例えば、p4 changes -s submittedと指定すると、サブミット済みのチェンジリストだけが表示されます。

p4 changes -u user

特定のユーザによってサブミットされたチェンジリストの一覧を表示します。

p4 changes -c workspace

特定のクライアントワークスペースからサブミットされたチェンジリストの一覧を表示します。

p4 describe changenum

単一のチェンジリストに関するすべての情報を表示します。 サブミット済みのチェンジリストの場合、対象ファイルの一覧および処理済みファイルの差分もレポートに含まれます (ファイルの差分を除外する場合は、-sオプションを使用します)。

p4 describe -O changenum

チェンジリスト番号が変更されている場合、チェンジリストを元のチェンジリスト番号で表します (例えば、チェンジリスト番号の自動付け替えの例で番号が変更されたチェンジリストは、p4 describe 783またはp4 describe -O 777により取得できます)。

詳細については、「チェンジリストのレポート」を参照してください。

チェンジリスト間でファイルを移動する

チェンジリスト間でファイルを移動するには、p4 reopen -c changenum filenamesコマンドを発行します。その際、changenumには、移動先のチェンジリストの番号を指定します。 ファイルをデフォルトのチェンジリストに移動する場合は、p4 reopen -c default filenamesコマンドを使用します。

チェンジリストを削除する

作業中チェンジリストを削除するには、そのチェンジリストに関連付けられているすべてのファイルおよびジョブを削除してから、p4 change -d changenumコマンドを発行します。 関連する操作には以下のものが含まれます。

既にサブミットされたチェンジリストを削除できるのは、Helix Core管理者だけです。 詳細については、『Helixバージョニングエンジン管理者ガイド: 基本』を参照してください。