5

クライアントの自動ビルド環境をセットアップしようとしています。Gitリポジトリをクライアントのビルドサーバーにプッシュしたいのですが、完全なGit履歴がありません。

でのアプローチを考えていgit checkout --orphan ciますが、このようなブランチ設定で日常的にどのように作業するのかがわかりません。

多分このようなもの(?):

  • 新しいコミットがに作成されますmaster
  • 機能は、いくつかのコミット後に終了します。
  • 次に、ciブランチはに基づいてリベース/マージ(早送り)されますmaster
  • ciブランチがチェックアウトされます。
  • 最近のコミット(まだどのサーバーにもプッシュされていません)は、クライアントから不要な履歴を隠すために押しつぶされます。
  • ブランチはciビルドサーバーにプッシュされます。
  • ..。

それは有効なアプローチですか、および/またはより簡単な方法がありますか?

4

2 に答える 2

6

これを管理する簡単な方法の1つは、次のとおりです。

  • 通常どおりに作業しますmaster(または他の機能分岐モデルを使用します)。
  • 機能を終了し、それをCIシステムにプッシュするたびに、次のことを行います。

    • git checkout ci
    • git merge --squash masterこれにより、すべての変更がブランチに反映さmasterれます。ci
    • git commit押しつぶされたすべてのコミットメッセージを含む事前入力されたコミットメッセージがあります。次に、このメッセージを編集して、機能のすべての変更を反映させることができます。
    • git push origin ci変更をCIシステムに送信します。

そこには多くの分岐モデルがありますが、これは十分に単純であり、必要なものを提供する必要があります。

これがお役に立てば幸いです。

于 2012-07-10T20:00:22.973 に答える
0

http://nvie.com/posts/a-successful-git-branching-model/のようなものを見ます

CIに関しては、とにかくブランチ全体のクローン/チェックアウトが行われることになるでしょうが、大きなバイナリをたくさん入れない限り、あまり心配する必要はありません。

于 2012-07-10T19:51:06.187 に答える