サーバー上のリモートのベアリポジトリにプッシュする開発者がいます。この中央のベアリポジトリからgitp4を使用して、プッシュを自動化して毎晩PERFORCEを実行したいと考えています。しかし、作業ツリーの外部でgit p4 submitを実行できないように思われるため、問題が発生しています。
このようなものに対処するための推奨される方法は何ですか?
数分ごとに実行され、gitとp4の間で双方向の同期を行うスクリプトで同様のことを行います。ただし、git-p4は、チェックアウトされたgitツリーとp4リポジトリの両方がないと機能しません。全部であなたはあなたのソースの3つのバージョンで終わります:
開発者は、「dev」と呼ばれるブランチを使用して、ベアgitリポジトリ(gitoliteで保持)にプッシュします。次に、数分ごとに、次のようなスクリプトがあります。
ガッチャ
競合をマージします。これらは実際には非常にまれにしか発生しませんが、いくつかの問題を引き起こす可能性があります。
開発者が(1)と(5)の間で変更をプッシュした場合に変更が失われないように、全体にロックを追加する必要がありました。ロックは、プッシュを遅らせるためにフックスクリプトの1つで使用されるロックディレクトリを作成するだけです。
RCSキーワード。'git p4'の新しいバージョンはRCSキーワードに対応するようになりましたが、元々は対応していなかったため、マージの競合が発生するため、全体がスタックすることがありました。
セットアップにはしばらく時間がかかりましたが、現在は18か月間、100人以上の開発者がインシデントをほとんど発生させていません。
git-p4 を使用せず、perforce チェックアウトでもある git ツリーをチェックアウトし、そこからすべてをスクリプト化するのが最も簡単でしょうか? つまり、git pull を実行し、出力を解析して適切なファイルを編集し、新しいファイルを追加し、削除されたファイルを削除してから、perforce にコミットしますか?