バージョン管理 PHP Web プロジェクト
-
08-06-2019 - |
質問
バージョン管理したい PHP プロジェクトがあります。現在、私たち 3 人がプロジェクトの開発バージョンに取り組んでいます。このプロジェクトは、すべての Eclipse IDE がリンクされている外部フォルダーに存在するため、バージョン管理はありません。
これをバージョン管理するための正しい方法および最良の方法は何ですか?
SVN をセットアップしましたが、必要なのは、開発サーバーでテストできるようにチェックインおよびチェックアウトするための適切な方法を見つけることだけです。何か案は?
解決
私たちも同様の状況にあり、最終的にやったことは次のとおりです。
- リリース ブランチと開発ブランチという 2 つのブランチをセットアップします。
- 開発ブランチの場合は、リポジトリを開発サーバーにデプロイするコミット後フックを含めて、テストできるようにします。
- 準備ができたら、変更をリリース ブランチにマージします。また、そこにデプロイメント用のコミット後のフックを追加することをお勧めします。
チーム メンバーごとに、ワークステーション上に個別の開発サーバーをセットアップすることもできます。セットアップ時間は少し長くなりますが、処理が少し速くなったと思います。
独自の CMS を使用していたため、ライセンスの問題が発生したため、単一の開発サーバーを使用する必要がありました。したがって、コミット後のフックは単純な FTP ボットでした。
他のヒント
私たちがやることは次のとおりです。
- 各開発者には、統合サーバーのように構成された VM があります。
- 統合サーバーには、トランク、各ユーザー用のスペース、およびブランチ用のいくつかのスロットがあります。
- 本番サーバー
- コミットが行われたときに電子メールへのフックが Subversion にあります
プロジェクトの開始時に、ユーザーはブランチを作成して個人用 VM 上でチェックアウトし、データベースのクリーン コピーを取得します。彼らは自分の仕事をこなし、やりながらコミットします。
自分の個人スペースですべてを完了したら、統合サーバーにログインし、ブランチをチェックアウトし、テストを実行します。すべてがブランチを通過すると、トランクにマージされます。
トランクが再構築され、一連のテストがすべて実行され、すべてが良好であれば古い承認のスタンプが押され、SVN でタグ付けされ、夜の終わりに運用環境に昇格します。
どこかの時点で他の誰かによるコミットが行われた場合、私たちは電子メールを受け取り、それらの変更を個々のブランチにマージできます。
豆の木 開発サーバー、ステージングサーバー、実稼働サーバーにデプロイするためのコミット後のフックが組み込まれています。
PHP 開発に Subversion を使用する 1 つの方法は、1 人または 3 人全員の開発者用にリポジトリをセットアップし、このリポジトリを真のバージョン管理というよりも同期ツールとして使用することです。
あなたは出来る、
リポジトリを作成する
プロジェクトの PHP ドキュメント構造全体を追加します
このリポジトリのコピーを開発サーバー上の正しい場所にチェックアウトします。
コミット時にアクティブ化される svn フックを使用する
このフックは、チームの誰かがコードをチェックインするたびに、開発サーバーの内容を自動的に更新します。
フックは次の場所にあります:
svn_dir/repo_name/hooks/post-commit
そして次のようになります:
/usr/bin/svn up /path_to/webroot --username svn_user --password svn_pass
これにより、開発サーバー上の作業コピーが最新のチェックインに更新されます。
配布されたものについてはどうですか?たとえば、Mercurial から始めて、さまざまなワークフローを試して、どれが最適であるかを確認できます。
各自がローカルで実行することも、自分の開発サーバー (または、異なるポートを持つ同じ開発サーバーでさえも) で実行することもできます。
考えられる方法の 1 つ (おそらくもっと良い方法があるでしょう):
各自がプロジェクトのチェックアウトしたバージョンを持っている必要があります。
コンピューター上にサーバーのローカル コピーを用意し、そこで 1 日を通してテストします。そして、毎日 (またはいつでも) 終わりに、テストの準備ができているものをマージし、開発サーバーにチェックアウトしてテストします。
ビルドに使用できる別のツールは次のとおりです。 チームシティ これは 20 のビルド構成に対して無料です (ほとんどの小規模企業/プロジェクトには十分です)。これにより、テストを実行したり、ビルドをスケジュールしたりできます。