Skip to content

Latest commit

 

History

History
147 lines (121 loc) · 7.55 KB

File metadata and controls

147 lines (121 loc) · 7.55 KB

Perforce

次のインポート元としてとりあげるのは Perforce です。 前述の通り、 Git と Perforce を相互接続するには2つの方法があります。 git-p4 と Perforce Git Fusion です。

Perforce Git Fusion

Git Fusion を使えば、移行のプロセスに労力はほぼかかりません。( [r_p4_git_fusion] で述べた通り)設定ファイルで、プロジェクトの設定、ユーザのマッピング、およびブランチの設定を行った後、リポジトリをクローンすれば完了です。 Git Fusion がネイティブな Git リポジトリと類似の環境を提供してくれるので、お望みとあればいつでも、本物のネイティブな Git リポジトリへプッシュする準備はできているというわけです。 また、お望みなら、 Perforce を Git のホストとして使用することもできます。

git-p4

git-p4 はインポート用ツールとしても使えます。 例として、 Perforce Public Depot から Jam プロジェクトをインポートしてみましょう。 クライアントをセットアップするには、環境変数 P4PORT をエクスポートして Perforce ディポの場所を指すようにしなければなりません。

$ export P4PORT=public.perforce.com:1666
Note

以降の手順に従うには、アクセスできる Perforce のディポが必要です。 この例では public.perforce.com にある公開ディポを使用していますが、アクセス権があればどんなディポでも使用できます。

git p4 clone コマンドを実行して、 Perforce サーバから Jam プロジェクトをインポートします。ディポとプロジェクトのパス、およびプロジェクトのインポート先のパスを指定します。

$ git-p4 clone //guest/perforce_software/jam@all p4import
Importing from //guest/perforce_software/jam@all into p4import
Initialized empty Git repository in /private/tmp/p4import/.git/
Import destination: refs/remotes/p4/master
Importing revision 9957 (100%)

このプロジェクトにはブランチがひとつしかありませんが、ブランチビューで設定されたブランチ(またはディレクトリ)があるなら、 git p4 clone--detect-branches フラグを指定すれば、プロジェクトのブランチすべてをインポートできます。 この詳細については [r_git_p4_branches] を参照してください。

この時点で作業はおおむね完了です。 p4import ディレクトリへ移動して git log を実行すると、インポートした成果物を確認できます。

$ git log -2
commit e5da1c909e5db3036475419f6379f2c73710c4e6
Author: giles <giles@[email protected]>
Date:   Wed Feb 8 03:13:27 2012 -0800

    Correction to line 355; change </UL> to </OL>.

    [git-p4: depot-paths = "//public/jam/src/": change = 8068]

commit aa21359a0a135dda85c50a7f7cf249e4f7b8fd98
Author: kwirth <[email protected]>
Date:   Tue Jul 7 01:35:51 2009 -0800

    Fix spelling error on Jam doc page (cummulative -> cumulative).

    [git-p4: depot-paths = "//public/jam/src/": change = 7304]

git-p4 が各コミットメッセージに識別子を追加しているのが分かると思います。 この識別子はそのままにしておいてもかまいません。後で万一 Perforce のチェンジ番号を参照しなければならなくなったときのために使えます。しかし、もし削除したいのなら、新しいリポジトリ上で何か作業を始める前の、この段階で消しておきましょう。 git filter-branch を使えば、この識別子を一括削除することができます。

$ git filter-branch --msg-filter 'sed -e "/^\[git-p4:/d"'
Rewrite e5da1c909e5db3036475419f6379f2c73710c4e6 (125/125)
Ref 'refs/heads/master' was rewritten

git log を実行すると、コミットの SHA-1 チェックサムは変わりましたが、 git-p4 という文字列がコミットメッセージから消えたことが分かると思います。

$ git log -2
commit b17341801ed838d97f7800a54a6f9b95750839b7
Author: giles <giles@[email protected]>
Date:   Wed Feb 8 03:13:27 2012 -0800

    Correction to line 355; change </UL> to </OL>.

commit 3e68c2e26cd89cb983eb52c024ecdfba1d6b3fff
Author: kwirth <[email protected]>
Date:   Tue Jul 7 01:35:51 2009 -0800

    Fix spelling error on Jam doc page (cummulative -> cumulative).

これで、インポート結果を新しい Git サーバへプッシュする準備ができました。