"git-p4"を使用したGitリポジトリとPerforceサーバの連携手順を紹介します。
"git-p4"を使用することで、毎日のGitでの作業をPerforceへコピーすることができます。また、反対にPerforceでの作業をGitにインポートすることができます。
※クライアント環境に"git-p4"がセットアップされていない場合は、『git-p4のセットアップ手順』を参照し、セットアップを実施してください。
1) インポートのファイルサイズ
PerforceからGitへインポートする際、Perforceのディポ全体をGitへインポートしないことをお勧めします。(※ディポ全体が100,000ファイル未満、500MB未満の場合を除きます)
Gitはリポジトリごとに1つのプロジェクトを管理するように設計されているため、リポジトリのサイズが大きくなるにつれて、Gitのパフォーマンスが低下します。 |
2) 非対応のファイルタイプ
Gitがサポートしていないファイルタイプ(apple,resource)のファイル、または、"+k"オプション(RCSキーワード拡張)が付与されたファイルはインポートすることができません。
インポート時にこれらのファイルが含まれているとエラーとなるため、".gitigonre"ファイルを作成し、問題ファイルをインポート対象から除外します。
3) 履歴情報
git-p4によるインポート処理において、デフォルトでは、最新リビジョンのみをPerforceサーバからインポートします。なお、履歴情報としては、この時点からのサブミット済チェンジリスト情報をインポートします。もし、全ての履歴情報が必要な場合、インポート時に"@all"を付与してコマンド実行する必要があります。
# git p4 clone //depot/path@all . |
※末尾の" . "はカレントディレクトリを示しています
4) クライアントワークスペース仕様の定義
git-p4の処理に使用するクライアントワークスペース仕様は、シンプルに作成することをお勧めします。
具体的には、除外マッピング・オーバーレイマッピング・ワイルドカードなどを使用しないように注意します。
5) インポート時のシンタックス
インポート時のPerforceサーバのパス指定では、Perforceシンタックスである" ... "や" / "を最後に追加しないように注意します。
6) 既存Gitリポジトリに対するインポート
既にインポートされているGitリポジトリに対して、"git p4 clone"コマンドを使用することはできません。この場合は、"git p4 sync"コマンドを使用します。
7) GitとPerforceの作業ディレクトリ
Git環境の作業ディレクトリとPerforce環境の作業ディレクトリを同じ場所にしないよう注意します。
① インポート環境の作成
Perforce環境とGit環境が混在しないように、各作業のディレクトリを作成します。
■ Perforce環境の作成
※ホームディレクトリ配下に作成した例で説明します
# mkdir git-p4-area |
# cd git-p4-area |
P4PORT=ssl:192.168.10.1:1666 |
# p4 client |
■ Git環境の作成
※ホームディレクトリ配下に作成した例で説明します
# mkdir git-area |
# cd git-area |
※Git環境の作業ディレクトリにも".p4config"ファイルが必要です
② インポート
手順①で作成した環境を使用して、Perforce環境からGit環境へインポートを実施します。
※コマンドはGit環境の作業ディレクトリで実行します。
# cd git-area |
Importing from //depot/Test@all into . |
"git-p4"コマンドを使用してGit環境とPerforce環境を連携するワークフローは以下の通りです。
"git p4 submit"コマンドは、Git環境の変更内容をPerforceサーバへ登録します。 |
■ ワークフロー
① Gitリポジトリに対するファイル編集
② Gitリポジトリに対するコミット
③ git p4 rebaseコマンド実行
④ git p4 submitコマンド実行
※コマンド概要は、続く「4."git-p4"コマンドについて」をご確認ください
コマンド一覧 | ||||
---|---|---|---|---|
git p4 clone | Perforceサーバからインポートを行い、Gitリポジトリを作成します
| |||
git p4 debug | p4コマンドにおけるグローバルオプション"G"と同様にPythonの辞書型オブジェクトとして情報を出力します | |||
git p4 commit/submit | Gitリポジトリの変更情報をPerforceサーバへサブミットします | |||
git p4 rebase | Perforceサーバの変更情報をGitリポジトリへ"rebase"します | |||
git p4 branches | インポートを保持するgitブランチと対応するPerforceディポパスを表示します
| |||
git p4 sync | PerforceサーバからGitリポジトリへインポートを行います ※初回クローン作成後は、git p4 cloneコマンドでなく、本コマンドを使用します
|