リポジトリ内のバージョン管理されたファイルの特定のバージョンを削除する必要がありますが、その方法がわかりません。
hg cat --rev [バージョン] [ファイル名] を使用してファイルを表示できますが、削除する方法がわかりません。
特定のファイル バージョンを削除する方法を知っている人はいますか?
リポジトリ内のバージョン管理されたファイルの特定のバージョンを削除する必要がありますが、その方法がわかりません。
hg cat --rev [バージョン] [ファイル名] を使用してファイルを表示できますが、削除する方法がわかりません。
特定のファイル バージョンを削除する方法を知っている人はいますか?
簡単な答え: レポが公開されている場合、それは非常に困難です。プライベートならもっと簡単。
長い答え: 変更セット指向の CVS である Mercurial は、実際にはファイルのリビジョンを保存しません。代わりに、リビジョン間の変更 (差分) を保存します。
それに加えて、すべての変更セット ID は、リビジョンの内容に基づいて暗号化ハッシュとして計算されます。これは、単一の変更セットを変更すると、そのすべての子孫の変更セットが変更されることを意味します。これは、Mercurial で履歴を書き換える代償です。
変更する必要がある変更セットがどこにもプッシュされていない (またはリポジトリ自体が非公開である) 場合は、必要に応じて履歴を変更できます。
変更セットが最近のものである場合は、Mercurial Queuesの使用を検討してください。変更セットをキューにインポートし、問題の変更セットに移動して、特定のファイルへの変更を元に戻し、残りのキューを再適用できます。
変更セットがかなり前にコミットされた場合、おそらくその親に更新し、問題のある変更セットを移植し (おそらくダミーの変更セットに貼り付けて機能させる必要があります)、それを MQ にインポートし、変更してからrebase --detach
、その上に残りの祖先。
プライベート リポジトリでも同じことができますが、系統のコピーが作成されることに注意してください。
-- 1 -- 2 -- A -- B -- C -- D original A and its descendants
\
A' -- B' -- C' -- D' modified A' and its descendants
A
–<code>D を–<code>D' に置き換えた後でもA'
、レポからプルしたすべての人はまだA
–<code>D を持っています! 彼らにこの血統を剥がす方法を見つけなければなりません。