7

私が働いている場所では Perforce 環境を使用していますが、機能が完成してテストの準備が整うまでチェックインすることはできません。変更のバージョン管理なしで 1 週間に 50 個以上のファイルをチェックアウトしたことがあるため、ローカル コミットを実行できる必要があります。

Git は私の目的に合っていますが、他の環境と最適に統合するために Git を設定する方法がわかりません。

私の目標は次のとおりです。

  • 機能に取り組んでいるとき、Perforce を完全に無視して、好きなだけ編集およびコミットできるようにしたいと考えています (Git で)。
  • 機能を提出する前に、P4V または P4Win にアクセスしてファイルを比較し、すべてが最新であることを確認する必要があります。テスト後、すべての変更を 1 つのコミットにまとめたいと考えています。

ローカル ワークスペースのルート ディレクトリに git リポジトリを作成するとうまくいくようですが、いくつか問題があります...

  1. このリポジトリには大量のファイルがあり、少なくとも最初のコミットでは git がクロールしています。
  2. Perforce から「最新のものを取得」したときに、git リポジトリを簡単に更新できるようにする必要があります。
  3. 編集する前に Perforce ですべてのファイルをチェックアウトする必要はありません。また、チェックアウトされていない書き込み可能なファイルであるため、Perforce で強制的に同期する必要もありません。

誰でもこれについてのヒントを教えてもらえますか? Perforceリポジトリにはバージョン管理が不要な部分がたくさんあるため、gitリポジトリのサイズを潜在的に縮小する方法として、gitのサブモジュールを検討してきました。

4

5 に答える 5

1

git-p4を使用する必要があります。この回答も役立つ場合があります。

于 2011-02-25T09:32:10.030 に答える
1

私は現在、まさにこのワークフローを使用しており、非常に優れています

企業の都合により、git-p4 コマンドは使用できませんが、クライアントのワークスペース ディレクトリ内に git リポジトリがあります。私たちのセットアップでは、構成コードのみがソース管理にチェックインされており、残りの開発セットアップは ZIP に保存されています。したがって、とにかく、ワークスペース ルートを調整することはありません。これには、明示的に無視する必要がないという追加のボーナスがあり.gitます。

あなたのポイントに対処する:

  1. 最初のコミットは...まあ、最速ではありません。既存のレポを複製するのではなく、ゼロから構築するのです。

  2. 時々、作業中のものを保存してコミットします。

    git checkout master && p4 sync && git add --all . && git commit -mupdate && git checkout feature-branch
    

    そしてハッキングを続けます。マージは、Perforce よりも Git の方がはるかにスムーズになる傾向があるため、通常、競合のためにフォーカスを中断する必要はありません。ただし、 @p4matawayは、より良いマージに取り組んでいるとのことでした。

  3. 「allwrite」ワークスペース オプションをオンにして (未編集のファイルを読み取り専用にしないでください)、何かをチェックインする準備ができたら、そのブランチをマージしてmasterP4V で調整します。私もコマンドラインからそれを行いますが、企業上の理由からです。長い話。

Git は、同じファイルへの複数の変更を伴う機能を扱う際に非常に役に立ちました。これは、長時間保留中の変更で発生する傾向があるものです。通常、アプリケーションのデータベースをリセットする必要があり、やりたくないデータベース スキーマの変更です。 QAがシナリオの途中にあるため、現在テストサーバーでそれを実行しています。変更リストが長く存在するほど、無関係な作業が同じファイルの 1 つに影響を与える可能性が高くなり、ローカルで分岐できるため、変更がまとまりにくくなります。この機能だけでも、このセットアップ全体を完全に価値のあるものにするのに十分です.

免責事項 - この Git リポジトリを永久に保持するつもりはありません。企業の理由のいくつかが今後のサーバーのアップグレードで解決されると、現在の環境ではサポートされていない非常に優れた Perforce 機能を使用できるようになります。

于 2014-04-02T15:52:02.033 に答える
0

これが大まかな解決策です。から同期した後p4git initそのディレクトリでを実行し、すべてのファイルを追加してコミットします。gitを完全に無視して作業を行い、それらをに追加してコミットしますp4

これといくつかの関連することは、この質問での議論でした。

于 2011-02-25T09:24:57.490 に答える
0

とにかくP4Vを使用しているので、少なくとも比較的新しいオフラインサポートオプションを試すことをお勧めします。それはあなたが求めているもののほとんどを可能にします(Gitを使用することを除いて)。

于 2011-02-28T19:04:44.003 に答える
0

私は StarTeam と git を使って仕事で同じことをしています。perforce の構文には詳しくありませんが、概念は一致するはずです。

まず、最初の git commit は常に遅いです。その後、ステージングのために変更されたファイルをスキャンするのに 5 ~ 10 秒かかる場合がありますが、ほとんどの場合、コミットはほぼ瞬時に行われます。コンテキストとして、私たちのコード ベースには約 50,000 のバージョン管理されたファイルがあります。

masterは StarTeam と常に同期していますが、StarTeam で直接開発作業を行うことはありません。を実行してgit checkout masterから、StarTeam の更新を実行し、次に git add と commit を実行します。

次に、自分の仕事のために、新しいブランチを作成し、そこですべての作業を行い、別の StarTeam 更新を で行い、 StarTeam にコミットする前にmaster機能ブランチを にマージします。masterしたがって、StarTeam のチェックインとチェックアウトはすべて で行われmaster、開発は常に他のブランチで行われるため、StarTeam の更新はクリーンに保たれます。

この混合アプローチには、コード レビューやフィールドの問題などのために部分的な作業をしばらく保留できるなど、他にもいくつかの優れた利点があります。私は現在、さまざまな使用状況で 5 つの git ブランチを持っています。また、一時的なデバッグ コードを入れるのにも非常に便利です。

于 2011-02-25T03:43:09.707 に答える