公式のタグドキュメントの 2 番目のセクションに、次のステートメントが書かれています。
作業ディレクトリを特定のタグに更新すると、そのディレクトリはタグ自体が存在する前の時点に戻ります。
特定のリビジョンにタグを付けると、初めて.hgtags
ファイルが作成されます。.hgtags
リポジトリの状態をこのタグ付けされたリビジョンに更新すると、リポジトリの状態は実際にはバージョン管理に追加される直前になります。
最初のタグを追加してから、リポジトリの状態をこのタグ付きリビジョンに更新する例を次に示します。
PS D:\tagstest> hg init
PS D:\tagstest [default tip]> echo 'Something' > readme.txt
PS D:\tagstest [default ?1 tip]> hg addremove
adding readme.txt
PS D:\tagstest [default +1 tip]> hg ci -m "First commit"
PS D:\tagstest [default tip]> hg tag first
PS D:\tagstest [default tip]> cat .\.hgtags
9494cb0dc308d91ecae8514a341c2fa2324d3ade first
PS D:\tagstest [default tip]> hg update first
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
PS D:\tagstest [default first]> cat .\.hgtags
cat : Cannot find path 'D:\tagstest\.hgtags' because it does not exist.
このケースは、質問で説明したとおりです。しかし、さらに進んで別のタグを追加しましょう:
PS D:\tagstest [default first]> hg up tip
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
PS D:\tagstest [default tip]> echo 'Something else' >> .\readme.txt
PS D:\tagstest [default ~1 tip]> hg ci -m "second commit"
PS D:\tagstest [default tip]> hg tag second
PS D:\tagstest [default tip]> cat .\.hgtags
9494cb0dc308d91ecae8514a341c2fa2324d3ade first
8b0455fffb17c978ef9e285905d76e34feae32f4 second
PS D:\tagstest [default tip]> hg up second
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
PS D:\tagstest [default second]> cat .\.hgtags
9494cb0dc308d91ecae8514a341c2fa2324d3ade first
ここでは、リポジトリの状態を 2 番目のタグに更新した後、.hgtags
ファイルは消えませんでしたが、リポジトリの状態は 2 番目のタグがファイルに追加される直前であるため、最初のタグだけが存在することがわかり.hgtags
ます。
アップデート:
あなたの場合、リビジョンが作成された後( stable
.hgtagsファイルの作成を引き起こした)最初のタグをリビジョンに追加したようです(でタグ付けした)。そのため、リポジトリの状態をリビジョンに更新すると、まだ作成されていないため、ファイルはありません。0d80b6ba4ba3b51a44f0f1d339fcac1d4b21f387
c70d8e7e516d8b9e0c520063a575b4acea1b2f94
testtag
testtag
.hgtags
例:
PS D:\tagstest2> hg init
PS D:\tagstest2 [default tip]> echo "Something" > readme.txt
PS D:\tagstest2 [default ?1 tip]> hg addremove
adding readme.txt
PS D:\tagstest2 [default +1 tip]> hg ci -m "First commit"
PS D:\tagstest2 [default tip]> echo "Something else" > .\readme.txt
PS D:\tagstest2 [default ~1 tip]> hg ci -m "Second commit"
PS D:\tagstest2 [default tip]> echo "Something more" >> .\readme.txt
PS D:\tagstest2 [default ~1 tip]> hg ci -m "Third commit"
PS D:\tagstest2 [default tip]> hg tag -r 0 first
PS D:\tagstest2 [default tip]> hg tag -r 1 second
PS D:\tagstest2 [default tip]> hg gl
@ 4[tip] a0753742f012 2013-08-21 00:29 +0400 peshkovroman
| Added tag second for changeset 7e4896c8ef3e
|
o 3 cee5760a9d1c 2013-08-21 00:29 +0400 peshkovroman
| Added tag first for changeset 12f055c90ee8
|
o 2 f4c00a7394e1 2013-08-21 00:29 +0400 peshkovroman
| Third commit
|
o 1[second] 7e4896c8ef3e 2013-08-21 00:28 +0400 peshkovroman
| Second commit
|
o 0[first] 12f055c90ee8 2013-08-21 00:28 +0400 peshkovroman
を呼び出すhg up second
と、リポジトリの状態はリビジョン 1 に更新されますが、.hgtags
作成されたのはリビジョン 2 のみです。