2013-08-20 1 views
6

Mercurialでタグを使いたいです。私はいつも最後の良いリビジョンを指し示す「安定した」タグを持つつもりです。タグを移動するには?

私が理解するように、私はhg tag stableで現在のチェンジセットにタグを付けることができます。

タグを移動する適切な方法は何ですか?私は再びhg tag stableを実行しようとすると、それは私に語った:

アボート:持っているタグ「安定した」は既に(強制的に-fを使用)

を存在し、私はそれを強制する場合、私はthis bugを取得決議もコメントもありません。すなわち、古いタグを複製する。私はタグが最初に何度もそこにいなければならない理由を知りません。私はちょうど1つのチェンジセットを指すようにそれを更新したいです。

+2

[意図された動作](http://selenic.com/pipermail/mercurial/2012-May/042762.html)のように見えます。奇妙な。 – mpen

+1

バグが提出されたときにメーリングリストの自動投稿にリンクしました。現在の状況は[Bugzillaで](http://bz.selenic.com/show_bug.cgi?id=3589)「解決済み」です。その理由を説明するコメントがあります。 –

+0

(psst、ちょっと、あなたはvcs-tags用のwikiを作成できますか?) – Will

答えて

10

私はこのようなタグ「動き」の動作を見ていないが、それは基本的に何かをコピーするので、オリジナルを削除します

hg tag --remove stable 
hg tag -r newrevisionhash stable 

またはバージョン番号のように、あなたのタグにサフィックスのいくつかの並べ替えを追加します。また、あなたのリリースを追跡することができます。

意見:私はいつも水銀が歴史を保存しているのに対し、gitでは何かを変えることができるが、水銀では代わりにそれを上書きしなければならない。

意見2:安定版をマークするもう1つの方法は、それらを1つの支店に保持することです。私が働いているところdefaultは安定したコードしか保持していません。他のすべての作業は独立したブランチで行われます。

タグを更新行うには汚いワンライナー:

current=`hg log -l1 --template '{node}'`; hg tag --remove stable; hg tag -r $current stable 

この残虐行為も.hgrcに水銀の別名として追加することができるようです:

[alias] 
movetag=!(current=`hg log -l1 --template '{node}'`; $HG tag --remove stable; $HG tag -r $current stable) 

私は現在の値をキャプチャタグ除去/追加はそれ自体でコミットされるので、チップを移動します(tipのタグ付けについては何も間違って見ることはできません)。確かにそれをもっと美しくする可能性はありますが、それらは私のために働きました。

+0

オプション2については、基本的にはそうしています。すべての作業は他のブランチで行われますが、準備ができたらデフォルトにマージしてから統合テストを実行します。マージが悪い場合は、「デフォルト」がfubarになることがあります。したがって、私はデフォルトで安定したタグを保持し、統合テストが完了した/確認された後にのみそれを移動する必要があります。 – mpen

+0

バージョン番号が機能しません。それは主要なピタだろう。新しい問題に取り組む前に、誰もが「安定的」に更新してほしい。常に最新のバージョン番号を検索することはできません。バージョン番号はそれを補うことができますが、私は常に最新のものを参照する必要があります。 これには一般的な練習が必要です。常にタグを削除する方が良いのですか、そこに同じタグが数十枚ありますか?実際には、「削除」は実際に何も削除しません。 '.hgtags'にダミーレコードを追加するだけです。新しいタグを追加すると、常にダミータグが複製されます。 – mpen

+0

それはもはや例えば例に挙げられていません。 'log'を出力するので、何かします。そして、私が言ったように、多分すべてを追跡することはちょうど「水銀の道」です。私はそれが私のトラブルを引き起こしたとは思わない。バージョン番号に関しては、タグ名に接尾辞が付いていたプロジェクトを見たことがあります(うまくいけば) - やや冗長ですが、開発者にとっては便利でした。 – guessimtoolate

7

移動するタグを持つ代わりに、代わりに名前付きの枝を使用する必要があります。彼らは動くタグのようにほとんど機能します。

あなたはすべての作業は、他の支店で行われている

上記のコメントで書くが、彼らは準備ができているし、その後統合テストを実行するとき、私たちは「デフォルト」にそれらをマージします。マージが悪い場合は、「デフォルト」がfubarになることがあります。したがって、私はデフォルトで安定したタグを保持し、統合テストが完了した/確認された後にのみそれを移動する必要があります。

この問題を解決するには、別の名前のブランチが必要です(stable)。次に、defaultのテスト済みで承認済みのチェンジセットを自分のペースでstableにマージします。チェンジXテストを通過するときdefaultは、まだテストされているチェンジセットを持っている場合、それは問題ではありません、あなたは安定したチェンジセットとしてXを促進するために

$ hg update stable 
$ hg merge X 

を行います。 Xの子孫( default上)は変化しないままであり、すなわち、それらはまだ安定とマークされていない。

+1

私はこれについて考えていました。私はこれがリリースを追跡するのを解決すると思うが、devsに引き出しとビルドの対象を与えていない。今、彼らは 'stable'ブランチ上にビルドしているからだ。彼らは、デフォルトまたはいくつかのものにマージバックする必要があります。 –

3

@guessimtoolateと@Martin Geislerはすでに指摘しているように、名前付きブランチを使用してすべての適切なリビジョン(これは会社でhgを使用する方法でもあります)に対応できます。別の方法は、bookmarksを使用することです。これは、1つのリビジョンに添付された可動ラベルとして機能します。

関連する問題