svnフィールドでの長いキャンプの後、私はバザールを使い始めました。私は以前にcvsの経験もあり、時々タグを使用しました。
svnを使用すると、バージョンをリリースしたら、トランクのsvnコピーをタグに実行します(例:svn copy trunk tags / 1.2.0)。バザールでは同じリポジトリ構造を作成しましたが、bzrコピーオプションがなく、bzrタグが存在することで考えさせられました。
実は、タグは使いにくいか、役に立たないかのどちらかだと思います。タグを使用する場合、基本的にはトランクを唯一のディレクトリとして使用し、マイルストーンに到達したらタグを付けます。その後、新しいマイルストーンに到達したときに、開発とタグ付けを続けます。これにより、次のタスクが複雑になります。
- 新しいバージョンを古いバージョンと再帰的に比較します(svnのようなアプローチ:diff --brief -r)
- 古いバージョンをバグ修正し、パッチバージョンを増やして新しいバージョンを作成します(svnのようなアプローチ:svn copy 2.0.0 2.0.1、次に修正を2.0.1に追加してコミットします)
- チェックアウトせずに必要なバージョンを取得します(ツリー全体をsvn-likeでチェックアウトすると、すべてのバージョンとブランチがあり、1回だけ実行します)
その結果、bzrで同じsvn repo構造を使用し、毎回トランクの物理コピーを実行します。これは、この配置でbzrtagコマンドが実際に使用されていないことを意味します。リビジョンごとにすべてのレポリビジョンが含まれているのに、レポリビジョン全体にバージョン番号をタグ付けする必要があるのはなぜですか?
bzrリポジトリのタグを使用して理解する上で私が間違っていることを誰かに指摘してもらえますか?
編集
私が見る限り、コンセプトはリリースごとに異なるbzrブランチ(独立したブランチ、トランクからbzrブランチを経由して来る)を持つことです。ルートディレクトリをリポジトリに配置しないという点だけで、svnに似ています。foo-1.0.0 foo-1.0.1 foo-2.0.0 foo-2.1.0トランクと言った場合を除いて、タグの特定の理由はまだわかりません。
分岐する前に常にリリースにタグを付けたとすると、トランクにはすべてのタグが含まれますが、foo-2.0.0にはタグにfoo-1.0.0が含まれますが、foo-1.0から分岐されたためfoo-1.0.1は含まれません。 .0。
タグを持って使用する必要性はまだわかりません。私のタグは、そのブランチ用に選択したディレクトリ名に暗黙的に含まれています。特定のリリース番号にはあまり興味がありません。特定のディレクトリにあることに興味があります。