2017-01-25 13 views
3

git p4 submit --shelveはローカルのgitリポジトリでコミットされた変更を受け取り、それらをチェンジリストXに置き、それらをシェルフします。git-p4チェンジリストを取得する方法

残念ながら私は、ローカルのgitリポジトリ内のファイルがチェンジリストX内のファイルと同じではないので、shelved変更についていくつかのコードレビューを行ったとしましょう。チェンジリストXのアップデートをローカルgitレポ?

+0

'git p4 submit --update-shelve'はそれをしませんか? – jamesdlin

+0

申し訳ありませんが、よく口にする質問です。私はperforceで棚上げされたファイルが変更されたことを意味し、git-p4リポジトリ内のファイルを更新したいと考えています。 –

答えて

0

diffを生成してgitツリーに適用することができます。 (diffを生成する最も簡単で信頼性の高い方法は、チェンジセットをクリーンなPERFORCEクライアントにunshelveしてからp4 diff -du ...を実行することです)。

In将来、あなたはこれをする必要はありません。最初にgit-p4を使う点は、主にgitで作業することですが、Perforceとの間で変更を同期させることです。したがって、git環境は「マスター」環境である必要があり、PERFORCEクライアントはPERFORCEサーバのステージング領域としてのみ使用する必要があります。

+0

私は、主にPERFORCEで働くユーザーと話し合い、Swarmを使用してコードレビューを行います。個人的にはgitを使いたいのですが、PERFORCEのユーザーと一緒に仕事をしようとしています。 –

1

私はこの種のサポートにmodified version of git-p4.pyを作った。各シェルビーチェンジリストの変更番号を持つファイルを作成します。次に、git p4 sync --changesfile <filename>を実行します。

唯一の問題は、p4/masterブランチに変更がインポートされるため、git-p4は変更が既に送信されていると考えてしまうことです。それを使用している場合は、新しくインポートされたコミットにいくつかのローカルgitブランチをハードリセットしてから、p4/master refをインポート前にハードリセットする必要があります。また、コミットメッセージの末尾に[git-p4: depot-paths = ...]情報を追加するので、git p4 submitを直接実行するには適していません。あなたはおそらくバッチでそれらをストリップするgitコミットフィルタのいくつかの種類を書くことができます。

それにもかかわらず、p4 unshelvep4 diff -dau > foo.patch、およびpatch -Npx -iを手動で処理するよりも良い方法だと思います。

関連する問題