あなたが求めているのは、Unified Change Managementです。これは、Subversionが本当にうまく設計されていないものです(IMO)。変更を管理するには、手作業である程度の労力を要します。しかし、ここで私が働いてきた多くの場所がやっていることだあなたが場所でまともな問題追跡システムを持っていると仮定すると:バグが修正パッチのリリースに取り組んで
main branch (trunk) - new feature development here
|- release-1.0 - locked release branch
|--- release-sp1
|--- release-patches - patch release fix stream (new fixes merged here)
|------ release-sp1-issue# - this is where you make your bug fixes
before merging them.
This issue# is the bug-id in your tracking system.
たら、古い-issue#ブランチを削除します。これにより、支店は支配しなくなりますが、チェンジセットを小さく保つことができます。
メンテナは、リリーストランクをインテグレータのみに書き込み可能にすることで強制できます。 apacheの経由でSubversionを使用:各続い
project
|- branches (everyone: rw)
|- individual-fixes
|- release-branches: (integrator: rw, everyone: ro)
|- release-1.0-fixes
|- release-2.0-fixes
|- trunk (integrator: rw, everyone: ro) <- new dev goes here!!!!
|- tags (integrator: rw, everyone: ro)
|- release-1.0
|- release-1.0-sp1
|- release-2.0
をマージSubversion/Apache Permissions、あなたがグループを作成することができ、インテグレータ、
プロジェクトに、次の権限を設定することは、十分に追跡され、小さい、人々の唯一の小さなグループがマージを行うことができます。ただし、これにより、マージチームにボトルネックが発生します。私は大規模なgit/mercurialチームと協力して、これがどのように機能するかを見てきたことはありません。
フィーチャ修正にも同様の方法を実装しますが、代わりにトランクをオフにします。
SVNを使用している場合、SVKはSubversionのマージの複雑さを管理するための素晴らしい付属ツールです。ツールとして、Subversionは、ClearCaseのようなものがリリース管理のセキュリティ/柔軟性の多くを提供するわけではありません。私は彼らがそのギャップを修正しようとするかどうかは確信していません - 彼らの述べられた目標はCVSより優れたCVSであり、彼らは驚くほどうまく管理しました。 –
ソースコントロールを変更するのは面倒です。 darthcoderの示唆しているように、より良いdiffツールを見てみたことがありますか?私はサードパーティのSVNクライアントを持っていますが、私は私のオペレーティングシステム(Apple FileMerge)に含まれているツールを使用するよりも、私が使っているサードパーティのdiffツールが好きです。 Araxis FileMergeはすばらしいツールです。私はChanges(OS Xのみ、残念なことに)がベストです。 –
@darthcoder&Andrew:明らかにMercurialはSVNリポジトリを簡単にインポートしてコミット履歴を取得することができますので、非常に複雑ではないかもしれませんが、あなたが提案しているツールを調べます。 – Billy