1. ホーム
  2. svn

[解決済み] SVN逆マージ?

2022-03-07 17:39:48

質問

私のSVNリポジトリはリビジョン497で完璧でした。私はいくつかの悪いコミットを実行し、現在はリビジョン HEAD になっています。ロールバックするには、このようなコマンドを使用する必要があるようですね。

svn merge -r HEAD:497 .

を作業ディレクトリに置いたまま(そして作業ディレクトリはHEADリビジョンにある)。しかし、このコマンドは正しいのでしょうか?それともHEAD:498?または496? 私はすでにそのコマンドを実行し、現在のリビジョンは497と同じではないようです。なぜなら、私が更新 -r 497(または497の作業コピーを持っていて更新 -r HEAD)すると、多くのファイルの更新が発生するためです。

HEAD:497 が実際には 496 に戻ってしまう、ある種のフェンスポストの問題か何かでしょうか?それとも、HEADと497が同一であるにもかかわらず、私が更新すると、SVNは各リビジョンを遡るということでしょうか?

編集してください。

はっきりさせたいのですが、先ほど言ったように、497とマージしたHEADの間で更新すると、多くのファイルが変更されているのが見えます。もし497とHEADが同一であれば、それを検知してファイルの変更は発生せず、単に"Updated to revision 497."と表示されると思いました。(そしてもしそうなら、なぜ?)

解決方法は?

あなたのレポがリビジョン497で原始的な状態だったのなら、あなたの言うとおり、aをする必要があると思います。

svn merge -r HEAD:497 .

このマージコマンドは作業コピーのファイルのみを変更するので、リポジトリの HEAD を更新するために変更をコミットすることも忘れないようにしてください。

マージとコミットを行った後、リビジョン497とHEADを比較してみると、両者は同一であるはずです。