0

gitを使用してコードを管理し、CIシステムを使用してビルドアーティファクトをビルド、コピー、およびgitに再プッシュします。マスターブランチにプッシュすると、CIシステムは変更をプルダウンし、ビルドして、本番と呼ばれるブランチにプッシュします。次に、そのブランチがテストされ、別のCIタスクが実行されて、本番ブランチがライブサーバーにプルダウンされます。

ライブサーバーのバージョンをインプレースで編集する人は誰もいません。そのリポジトリのローカルコピーが変更されることはなく、-bproduction修飾子を使用して複製されます。

ただし、ライブサーバーにプルダウンすると、競合が発生する場合があります。gitの理解に問題があると確信していますが、サーバー上で何も変更されておらず、そのブランチからのみプルしている場合、競合はどのように発生する可能性がありますか?

私たちのプロセスは、基本的に次のとおりです。

ローカル:

git push origin master

CI:

git checkout <newest-changeset>

CI:

test
git checkout -b local # to put the detatched-head CHECKOUT from above into a usable branch
git push origin local:production

サーバ:

git pull origin production
--CONFLICT--
4

1 に答える 1

0

プロセスに変更セットの周りの構造が欠けているようです。変更セットをマークする方法として、任意のコミットを使用しません。CI http://dymitruk.com/blog/2012/02/05/branch-per-feature/の作業を整理するには、機能ごとのブランチの投稿をご覧ください。

このようにして、必要なときに本番環境にプロモートできるリリース候補ビルドと、開発中にCIに健全性テストを実行させるために頻繁に必要な統合ビルドを簡単に割り当てることができます。

于 2012-07-10T17:31:00.957 に答える