2009-04-22 17 views
5

私はsvnフィールドで長いキャンプの後、バザールを使い始めました。私はcvsも以前の経験を持っていました。私はたまにタグを使いました。バザールのタグのポイントは何ですか?

svnでは、バージョンをリリースすると、svn copy trunk tags/1.2.0など、トランクのタグをタグにコピーします。バザールでは同じリポジトリ構造を作成しましたが、bzrコピーオプションがなく、bzrタグが存在すると私は熟考しました。

実際、私はタグを使用するのが難しく、役に立たないと感じています。 タグを使用すると、基本的に私のトランクが唯一のディレクトリになり、マイルストーンに到達するとタグが付けられます。新しいマイルストーンに達すると、私は引き続き開発してタグ付けします。再帰的に古いバージョンに対する新しいバージョン(SVNのようなアプローチには:デフ--brief -r)を比較

  • :これは、次の作業を複雑に古いバージョンのバグフィックス
  • を、その使用して新しいバージョンを作成しますあなたがチェックアウトしなくても、あなたが望むバージョンを得ることができます(あなたがチェックアウトしている場合は、svnのようなアプローチで:svnのコピー2.0.0 2.0.1、修正を2.0.1に加えてコミットしてください)
  • あなたはすべてのバージョンとブランチを持っていて、あなたは一度だけ行います)。

その結果、私はbzrで同じsvn repo構造体を使用し、毎回トランクの物理コピーを実行します。つまり、この配置ではbzrタグコマンドを実際に使用することはできません。すべてのリビジョンですべてのリポジトリリビジョンが含まれている場合は、なぜリポジトリリビジョン全体にバージョン番号を付ける必要がありますか?

誰も私がbzr repoのタグを理解して理解するのに間違っていることを指摘してもらえますか?


編集

だから、私の知る限り見るような概念は、各リリースのために(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.1ではなくから分岐していますfoo-1.0.0。

まだタグを使用して使用する必要はありません。私のタグは、そのブランチで選択したディレクトリ名に暗黙のうちに入っています。私は本当に特定のリリース番号に興味はありません、私はちょうどそれが特定のディレクトリにあることに興味があります。

答えて

12

をチェックアウトのbzrのタグは何ですか?

タグは、特定のリビジョンのハンドルを覚えるのが簡単です。むしろ[email protected]を覚えている、または19721をrevnoしようとするよりも、あなたのタグを参照することができます。

bzr export -r tag:foo-1.0.0.0 release-foo-1.0.0.0.tar.gz trunk/ 

私はbzrの中のリリースを管理するかもしれない方法は?

あなたは、開発の別の行としてあなたのリリースを扱っているかのようですね(別名:支店)、私はあなたのトランクにタグ付けするので、あなたはから分岐どこで知っていると別のリリースブランチを作成することをお勧めします:

bzr tag -r 1234 -d trunk/ foo-1.0.0.0 
bzr branch -r 1234 trunk/ release-1.x 

あなたは1.xリリースのためにあなたのバグ修正を行うと、あなたはそれぞれのポイントリリースにタグを付け、リリース1.xのブランチでそれらを実行します。

bzr tag -r 1255 -d release-1.x/ foo-1.0.0.1 
bzr export -r tag:foo-1.0.0.1 release-foo-1.0.0.1.tar.gz release-1.x/ 

あなたのディレクトリ構造は次のようになります。

0123を
fooproj/ 
    release-1.x/ 
    release-2.x/ 
    trunk/ 
+0

はい、私は簡単に覚えるにはポイントを参照してくださいませんもし私がそれを必要とする理由がなければ、特定のリビジョン。リビジョンはインクリメンタルですが、唯一の特定の事実は、それらが時間通りに注文されることです。 3.0.0がリリースされた後も2.0.1をリリースすることができるため、リリース時の注文は異なります。 –

+0

あなたのタグはGUIDのように見えます。 :) – Luke

+0

ああ、寒さはちょうど1.0、2.0などとなってしまった。私は重要なバージョンのセグメントで逃げ出した。チャンスを得るたびにfooを使うのが好きなので投げ込んだ。 – vezult

8

さて、基本的には、SVNディレクトリ構造をコピーしてはいけません。なぜSVNにはそういうのがあるのか​​わかりませんが、基本的にタグは、あなたのbzrリポジトリのある時点の単なるマーカーです。あなたがタグに対してdiffをしたいとき、あなたがリリースを作っている時はいつでもそう、ちょうどそれをタグ付けし、あなたの方法になり

bzr diff -r tag:TAG_NAME 

のように行うことができます。特定のフォルダや何かに何かを移動するような特別なものはありません。

私は、あなたのコードの2.0.x行に戻りたいと思うもののために、タグの代わりに別々のブランチを使い始めることをお勧めします。そうすれば、2.0.x用ブランチとその中に2.0.0と2.0.1のようなタグがあります。

また、http://bazaar-vcs.org/Specs/Tagging

1

svnのタグは、svnの分岐によく似ています。 bzrブランチによくマッピングされたワークフローについて説明しました。タグは、誰もがトランクから正確にリ​​リースされたバージョンを取得することができますので、あなたのリリースへのポインタを持つ一方の枝を持っていることができます:

のbzrのブランチトランクのfoo-1.0 -rタグ:1.0

関連する問題