バージョン管理のコードはどのように保存する必要がありますか?


19

バージョン管理のコードはどのように保存する必要がありますか?

開発者に優しい?プログラマーは、多くの変更を行うことなく、エディターから最新のものをすぐに実行できるようになりますか?(dev DB..etcを指す構成ファイルなど)

または

それは生産に適しているべきですか?ソースは本番環境に簡単に展開できる方法である必要があり、開発者が最新版を取得する場合、開発ニーズに従って変更を実行する必要があります。

回答:


56

選択する理由 両方でなければなりません。

開発環境は、チェックアウト、オープン、ビルド、実行、デバッグを行うのと同じくらい簡単になるように構成する必要があります(例:絶対パスなし!)。これは、コンパイルディレクティブ、構成クラス+依存性注入、またはASP.NETのperso.configなどのトリックで簡単に実行できます。

自動化されたビルドスクリプトは、特定の本番構成、クリーンアップ、パッケージングなどを処理するために十分にカスタマイズする必要があります。


perso.configとは何ですか?簡単なグーグルは私を助けてくれませんでした。
ティムマーフィー

1
.NETアプリケーション構成ファイルでは、別のアプリケーション構成ファイルを参照できます。このファイルは、検出されると、指定された設定をオーバーライドします。そのため、接続文字列などをオーバーライドするdev.configファイルを作成し、リポジトリから除外できます。

5
+1-開発者は正しいソースを取得すると考えるべきではありません。また、本番展開はソース管理から直接行われるべきではなく、適切に構築され、テストされ、追跡可能な部分で行われるべきです。このプロセスは完全に自動化する必要があります。

9

人々が貢献することが期待されるオープンソースプロジェクトの場合、私は開発者に優しいものを選ぶでしょう。

オープンソースプロジェクトに関する私の最大の嫌悪は、リポジトリがコードをビルドするために必要なすべての依存関係を含むことはめったにありませんが(実際的または法律上の理由で)より重要なのは、必要なバージョンです。(そしてできればどこから入手するか)

目的のプロジェクトをビルドするために、他のいくつかのプロジェクトを取得してコンパイルするのに半日以上かかることがあります。

もちろん、これはWindowsでの開発にのみ関係します。


1
それは私から地獄のバグです。非常によく知られているOSSでも見つけることができます。
ティムマーフィー

1
依存関係を自動的に取得することにより、この問題を軽減するシステムがあります。例えば、Apache Maven、Ivy、scons。
sleske

4

両方ですが、それはあなたがどのくらい頻繁にあなたの作品を作るかに依存しています。多くのカスタマイズされたアプリケーションでは、展開は手動でローカルに行われます。一方、開発者はプロジェクトの規模にかかわらず、常にコードをコミットします。私の意見では、開発者がバージョン管理を正しく使用できることを確認することがより重要であると考えています。


継続的な展開エンジンを使用して構築する場合、運用展開は問題ではありません。

1

それは生産にやさしいはずです、そうでなければ自動化されたビルドを維持することは問題です。


8
どうして?自動化されたビルドスクリプトは、ソースを展開可能な形式に再構築するために必要なすべての翻訳を行うことができます。自動化によって解決できる人を悩ますことはありません。
ジョーリセブレヒト

1

仕事をやりやすくするために、私はすべて摩擦を下げることを望んでいますが、障害モードも考慮する必要があります。

ソースリポジトリバージョンが常に本番用に構成されている場合、システムを実行する前に開発者が再構成に失敗した結果はどうなりますか?実動に対してコードを実行する開発者。

開発者がプロ​​ダクションをランダムに変更する方法に他のハードルがあるかどうかに関係なく、それを促進する障害モードを構築することは危険に思えます。

コミットされたコードに含まれるデフォルト値は常に安全であるべきだと提案します。必要に応じて、プロダクション構成ファイルもソース管理にチェックインします-私はほとんど常にそうします-しかし、「ライブではない」どこかに保管します。


0

私は生産にやさしいために努力する傾向があります。ビルドをクリーンに保ち、無関係な設定が本番環境に移行するのを防ぎます。



-1

なぜ展開可能なコードや開発者向けバージョン用のブランチ(使用するバージョン管理に依存します-Gitを使用します)を持たないのですか?これは非常に良く聞こえ、セットアップもそれほど難しくありません。

変更を処理してコミットし、デプロイ可能なバージョンにマージできます。


長寿命のブランチは管理に費用がかかり、マージが難しい傾向があるためです。両方のブランチですべての変更を行うことを忘れないでください。両方のバージョンを同じにするか、開発者向けのコードからデプロイ可能なアーティファクトを生成するスクリプトを用意する方がはるかに優れています。
bdsl
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.