あなたがしなければならないことは、そのブランチをタグに再コピーすることだけです。 Subversionはすべてretagですが、CVSと異なり、名前の変更履歴を保存します。
しかし、私は
は、あなたのブランチやタグの名前を簡略化...いくつかのことをお勧めします。 CVSでは、ブランチとタグが同じ名前空間を共有していました。 Subversionでは、それらはしません。 R
とB
のプレフィックスは必要ありません。
アンダースコアを取り除く。 Subversionではドットを使用できます。たとえば、リリースはRelease_1_0ではなくRelease-1.0になります。ヘック、私はRelease
の部分でも気にしませんでした。タグ1.0
と支店1.0
を呼び出してください。
今、主なもの:タグを再利用しないでください!ダメダメダメ。これはCMコミュニティーでと呼ばれています。逆パターンです。 アンチパターンは、悪いCMプラクティスです。
CVSがCVSとは異なり、CVSのタグと変更の履歴を保持しているので、CVSのSubversionと同じように、Subversionのタグを動かすほど悪くありません。ただし、タグは特定の時点のスナップショットである必要があります。つまり、リリース1.0について言えば、と言っている必要はありません。「先週にリリースしたバージョン1.0、またはその前の週は、ですか?
私はあなたのしていることを理解していますが、より良い方法があります。まず第一に、Subversionのタグ付けは非常に簡単です。 svn cp...
を実行すると完了です。 CVSでは、40〜50分かかる可能性があります(これはおそらくあなたがタグ再利用事業を開始した理由です)。
タグの末尾に何かを追加することをお勧めします。例えば、1.0-2012-2-29のようなものを置くことができるので、2012年2月29日にリリース1.0について話していることを知っているでしょう。まだ1.0で始まっているのでリリース1.0ですが、あなたはを知っていますリリース1.0あなたが話している。
なぜこれらのリリースにラベルを貼っていますか? Subversionでは、多くの人が単純にSubversionリビジョンIDをクイックタグとして使用します。あなたのソフトウェアのリビジョン20321について話すことができます。実際のリリースを実際に行ったときにタグを付けます。
私たちはビルドシステムとしてJenkinsを使用しているので、コミットごとに別々のビルドがあります。 QAはテストのためにジェンキンスのビルドをすぐに利用します。私たちの開発者は、リリース1.0のBuild#29(リリース1.0はブランチへの参考にすぎません)と言っています。後でQAがリリース用の特定のビルドを認定したと言い、Jenkinsに戻ってその特定のビルドをRelease-1.0などのものとしてタグ付けします。
最後に、各ビルドにRelease-1.0-B-xxxというタグを付けました。ここで、「xxx」はJenkinsのビルド番号です。これらのビルドタグは、Subversionリポジトリに/project/tags/BUILDS/
の下に置いてありますので、リリースの内容を確認するためにsvn ls /project/tags
を実行するときに表示されません。実際にリリースされた時点で、ビルドタグを実際のリリースタグにコピーします。
$ svn cp http://build/src/foo/tags/BUILDS/1.0-B-233 http://build/src/foo/tags/1.0
この情報が役立ちます。 Subversionは、CVSにあった多くの問題を処理します。タグ付けは瞬時に行われ、リポジトリ内のすべての変更にはリポジトリ全体のリビジョン番号があり、単にビルドタグとして使用することができます。さらに、タグを移動しても、変更が行われたとき、変更が行われたとき、そして誰がそれを行ったのかを追跡します。あなたは新しいタグと古いタグとの間の差分を尋ねることさえできます。
ただし、タグは変更できません。私はタグを作成することができますが、一度設定されると変更することはできません。