しばらくの間、バージョン管理にStarTeamを使用してきましたが、Subversionに移行しています。私はSubversionの本を読んでいますが、StarTeamにはSubversionにはない大きな機能が1つあるようです。それは、ラベルの概念です。Subversionにラベルがあることは知っていますが、StarTeamでは別の意味があります。StarTeamでは、一連のファイルに「ビルドの準備ができました」というラベルを付けてから、それらをチェックアウトして特定のリリースに含めることができます。次に、そのリリースに含まれているファイルを示すフリーズラベルを作成できます(ディレクトリ内のすべてではなく、特定のリビジョンにあることを除いて、Subversionタグに似ています)。
Subversionでそのような機能を取得する方法はありますか?タグを付けるリビジョンを指定できることは知っていますが、コードがあり、リリースを実行しようとしてバグを見つけた場合、または誰かが特定の変更を含めるべきではないと判断した場合はどうなりますか。リポジトリとローカルの作業コピーに基づいてタグを作成できることは知っていますが、これには、含めるべきではないファイルの特定のリビジョンをチェックして、タグを作成することが含まれます。「ラベル」を作成する準備ができていれば、不要なファイルのヘッドバージョンにそのラベルを付けることはできません。Subversionのビルドに特定のリビジョンを指定する自動化された方法はありません。これは、ブランチで新しい機能を開発する必要がある場合ではありませんが、リビジョンがトランク(またはタグを作成する場所)にある場合はさらに多くなります。しかし、含まれるべきではありません。元に戻す必要はないかもしれません。変更は適切である可能性がありますが、将来のリリースでは、この現在のリリースではありません。必要な正確なファイルバージョンを含む特定のリビジョンがない場合は、リポジトリと作業コピーから手動で混合して一致させる必要があるようです。
同様の状況で、リリースの一部ではなく、タグ付けする必要のないファイルがSubversionにある場合はどうなりますか。StarTeamでは、すぐに作成できるラベルをそれらに添付しませんが、Subversionでは、ディレクトリ内のすべてのように見えます。そのようなファイルをビルドとタグから除外する方法はありますか?これはsvndumpfilterexcludeの目的ですか?
つまり、タグに特定のファイルの特定のリビジョンのみを含める方法はありますか、それともリポジトリ内の特定のリビジョンにする必要がありますか、それともリポジトリ内のファイルと作業コピーを手動で組み合わせる必要がありますか?