6

私は Git を初めて使用し、バージョン管理と展開のために Web サイトを SVN から GIT に移動しようとしています。

ローカル マシンで作業する多くの開発者がいて、「開発」、「ステージング」、「運用」の 3 つのサーバーがあります。

本を読んだり、Git がどのように機能するかについてのビデオを見たりしているので、追加やコミットなどについてはかなり慣れていると思いますが、ワークフローと展開についてアドバイスが必要です。

最初に知っておく必要があるのは、GIT リポジトリを初期化する場所です。「本番」サーバー上にある必要がありますか?「ステージング」および「開発」でクローンを作成し、各開発者もそれをローカル マシンにクローンしますか?

第二に、各サーバーには独自のブランチが必要ですか? つまり、「開発」には「開発」ブランチがあり、「ステージング」には「ステージング」ブランチがあり、「生産」には「生産」ブランチがありますか?

ありがとう

4

4 に答える 4

8

最近、チームも SVN から Git に移行しましたが、3 台のサーバー、prod、stg、および dev の同じセットアップがあります。

移行プロセスでは、まずsudo apt-get install git-svn、次に..

$ git svn clone [subversion_repository_url] /path/to/git/repository
$ cd /path/to/git/repository
$ git remote add origin [gir_repo_url]
$ git push origin master

ワークフローの場合、

「成功した Git 分岐モデル」というタイトルのこのリンクは非常に役に立ちました。チームで「プロダクション - ステージング - 開発」タイプのワークフローを使用する方法が含まれます。

展開に関して

各サーバーで行うことは、各サーバーがファイルシステムのどこかに git リポジトリを持っていることです。展開するには、展開する必要があるそれぞれのブランチをアーカイブし、/srv/www/ フォルダーに解凍します。

たとえば、Prodでmaster ブランチをデプロイするには、

sudo git archive --format zip --output output.zip master -0

^「マスター」は、圧縮するブランチを示します。これにより、.git フォルダーは除外されます。そして /srv/www/ フォルダ内に解凍する、sudo unzip output.zip -d /srv/www/app/ これはsvn exportコマンドに相当します。

ステージング サーバーの場合、通常、リリース ブランチまたは開発ブランチのいずれかをチェックアウトします。

また、Dev server については、テストを実行する必要がある機能ブランチをチェックアウトします。

于 2012-10-31T14:51:32.283 に答える
2

ここで 3 つの質問があります: 展開方法、ブランチの構成方法、およびリポジトリの構成/ホスト方法です。

ブランチを構成するにはどうすればよいですか?

簡単に始めることができます。既に SVN リポジトリがあるので、トランクとブランチがある場合は、git で同じ方法でセットアップできます。それがうまくいかない場合は、必要な場合にのみ変更してください。

より高度なものが必要な場合は、git flowをご覧ください。もう 1 つの優れたワークフローは、github が使用するものです。git flow よりもシンプルになるように設計されています。

リポジトリをホストするにはどうすればよいですか?

簡単な方法の 1 つは、SVN で行っているのと同じようにすることです。中央サーバーに中央リポジトリを配置します。誰もがその中央サーバーとの間でプッシュとプルを行います。もう 1 つのオプションは、ある種の主任開発者に「公式」リポジトリを提供することです。その主任は、主任の承認を得たときに、貢献している開発者から他の変更をプルします。これを行う方法はいくつかあります。自分にとって何が最適かを判断する必要があります。

どのように展開しますか?

繰り返しますが、これも SVN ワークフローから変更する必要はありません。おそらくsvn update、各ボックスから を実行しています。各ボックスに を実行し、git pull他のすべてをほぼ同じに保ちます。

于 2012-10-31T14:56:35.213 に答える
1

その多くは、最終的に何があなたにとって正しいかによって異なります。

ここで別の回答にリンクされている分岐モデルは、非常に良い出発点です。

通常、masterリリースされたコードを表すブランチがあります。

ステージングは​​、何をステージングするかによって異なります。私たちのチームにはstaging、継続的インテグレーション サーバーのステージング ビルドで使用される別のブランチが用意されています。さまざまな機能をこのブランチにマージして、ステージングでテストできます。

デプロイは、CI を使用するか、リポジトリのブランチから直接デプロイするかによって異なります。

于 2012-10-31T14:56:17.833 に答える
0

私は独自の戦略を開発しました。もともとはnvieのものに基づいていました:

http://dymitruk.com/blog/2012/02/05/branch-per-feature/

これにより、完成した機能をアドホックに組み合わせることができます。この戦略の基本は、反復ごとに履歴の同じ場所から各機能を開始することです。

于 2012-10-31T17:03:37.630 に答える