過去に、Subversionリポジトリを使用してソースドキュメントを保存し、リポジトリ組織の「プロジェクトマイナー」規則に従いました。これは、大小の組織の両方で非常にうまく機能することがわかりました。
リポジトリブランチを構築します。次のようなタグとトランク:
branches-+
+-personal-+
| +-alice-+
| | +-shinyNewFeature
| | +-AUTOMATED-+
| | +-shinyNewFeature
| +-bob-+
| +-AUTOMATED-+
| +-bespokeCustomerProject
+-project-+
+-shinyNewFeature
+-fixStinkyBug
tags-+
+-m20110401_releaseCandidate_0_1
+-m20110505_release_0_1
+-m20110602_milestone
trunk
実際のソースツリー内では、次のような構造(のようなもの)を使用します。
(src)-+
+-developmentAutomation-+
| +-testAutomation
| +-deploymentAutomation
| +-docGeneration
| +-staticAnalysis
| +-systemTest
| +-performanceMeasurement
| +-configurationManagement
| +-utilities
+-libraries-+
| +-log-+
| | +-build
| | +-doc
| | +-test
| +-statistics-+
| | +-build
| | +-doc
| | +-test
| +-charting-+
| | +-build
| | +-doc
| | +-test
| +-distributedComputing-+
| | +-build
| | +-doc
| | +-test
| +-widgets-+
| +-build
| +-doc
| +-test
+-productLines-+
| +-flagshipProduct-+
| | +-coolFeature
| | +-anotherCoolFeature
| | +-build
| | +-doc
| | +-test
| +-coolNewProduct-+
| +-build
| +-doc
| +-test
+-project-+
+-bigImportantCustomer-+
| +-bespokeProjectOne
| +-bespokeProjectTwo
+-anotherImportantCustomer-+
+-anotherBespokeProject
アイデアは、リポジトリの構造を使用してエンジニアリングチーム間のコミュニケーションの構造化を支援することでした(現在もそうです)。ビジネスの顧客対応部分およびその他のさまざまな利害関係者とドメインの専門家。
言い方をすれば、「プロジェクト」ディレクトリの1つにあるソースドキュメントは、一度しか使用されません(そしてお金を稼ぎます)。「productLines」ディレクトリの1つにあるドキュメントは、その特定のラインの製品が販売されるたびにお金を稼ぎます。「ライブラリ」ディレクトリの1つにあるドキュメントは、それを使用する製品が販売されるたびにお金を稼ぎます。
これにより、コストの償却という概念が明確になり、ビジネス全体でソースドキュメントの再利用のサポートを構築できます。
理想的な世界では、ビジネスの一部に直面している顧客もこの構造を使用してプレゼンテーションやその他の販売資料を保存するため、開発者は関連する製品ディレクトリと並んで作成された顧客の期待を確認でき、顧客に直面している同僚は開発を追跡できます販売している機能と製品の進歩。
また、ビルド自動化ツールが動作できる共通の構造があることも意味します。(私たちのビルドスクリプトは、各コンポーネントのビルド方法を指定する構成ファイルを見つける「ビルド」フォルダーを探してソースツリーを歩きます。ドキュメントの生成とテストでも同様のプロセスが発生します)。繰り返しますが、理想的な世界では、組織のWebサイトやその他のマーケティング資料を同じ方法で構築できます。
最後のメモとして。継続的インテグレーションシステムは、ビルドをトリガーする必要があることを知っています。静的分析; トランクが変更されるたびに、「タグ」ブランチが変更されるたびに、および「自動」ブランチブランチが変更されるたびに、煙テストと単体テストが実行されます。このようにして、個々の開発者は個人システムで重要な機能であるIMHOでCIシステムを使用できます。