職場では、開発はPERFORCEを使用してコード共有を処理します。回帰テストの準備が整うまで変更をチェックインすることは許可されていないため、「リビジョン管理」とは言いません。個人的な変更セットをリビジョン管理下に置くために、独自のgitを構築し、PERFORCEデポのクライアントビューをgitリポジトリとして初期化するためのゴーサインが与えられました。
ただし、これを行うにはいくつかの困難があります。
~
クライアントビューは、( )のサブフォルダーにあり、独自の履歴を使用してリビジョン管理下~/p4
に置きたいと思います。サブモジュールを使用せずに履歴を分離し~
て保持する方法がわかりません。サブモジュールの問題は、サブモジュールになるリポジトリを作成してから、作成する必要があるように見えることです。ただし、。を除いて、サブモジュールのリポジトリを作成する場所はありません。gitp4cloneを使用してデポの初期クライアントビューを作成するための安全な場所はないようです。~
~/p4
git submodule add <repo> <path>
~
(私は、リポジトリをgitリポジトリのサブディレクトリに初期化または複製することはサポートされていないという仮定に基づいて作業しています。少なくとも、ネストされたgitリポジトリには信頼できるものは何も見つかりません。)
編集:ネストされたリポジトリを初期化するのに十分な
~/p4
ルートのリポジトリを単に無視していますか?私の__git_ps1関数は、gitリポジトリの無視されたサブディレクトリにアクセスしたときに、まだgitリポジトリにいると見なしているので、そうは思わない傾向があります。~
~/p4
git p4 syncによって作成された「リモート」リポジトリを〜/p4のブランチにする必要があります。バックアップされないように、すべてのコードを〜/p4に保持する必要があります。実際にはローカルブランチである「リモート」ブランチからプルできますか?
これは便宜上のものですが、聞いてみれば学べると思いました。プロジェクトの99%については、最初のコミットオブジェクトとしてp4ヘッドリビジョンから始めたいと思います。残りの1%については、p4の履歴全体を吸い取って、gitで閲覧できるようにしたいと思います。IOW、初期化が完了した後、remotes / p4/masterブランチの最初のコミットには次のものが含まれます。
revision 1 of //depot/prod/Foo/Bar/* revision X of other files in //depot/prod/*, where X is the head revision
ブランチに
remotes/p4/master
はY個のコミットが含まれます。Yはファイルを含むチェンジリストの数であり//depot/prod/Foo/Bar/*
、履歴内の各コミットはそれらのp4チェンジリストの1つに対応し、HEADはp4のヘッドのように見えます。
編集:meagarの答えは私にはうまくいきませんでした。
私は〜を初期化し、それにいくつかのコミットをチェックインしました。〜/ p4を無視しましたが、〜/ p4はどのコミットオブジェクトにもありません。=:
[~@ernie02] (master) $ git show HEAD:p4
fatal: Path 'p4' exists on disk, but not in 'HEAD'.
次に、チェックアウトしたいブランチである〜/ p4/prodに移動しました。しかし、このリポジトリは壊れています:
[~/p4/prod@ernie02] (master) $ git log
(shows the log for the repo rooted at ~)
[~/p4/prod@ernie02] (master) $ git init
Initialized empty Git repository in ~/p4/prod/.git/
[~/p4/prod@ernie02] (master) $ git log
fatal: bad default revision 'HEAD'
編集編集:おっと、私は何かをコミットするのを忘れました~/p4/prod
。私は今gitp4sync // depot/prodを試しています...