web-dev-qa-db-ja.com

SVNでファイルを古いリビジョンに戻す方法

私の仕事では、svnを使用しています。 WindowsPCでtortoisesvnをWindowsシェル/エクスプローラー拡張機能として使用しています。私はsvnで* .cソースファイルを維持していました。同僚の1人が私のバージョンに加えていくつかの変更を加えてチェックインしましたが、彼のすべての変更を完全にテストする必要がありました。その結果、特定のテストケースでコードが壊れています。彼は、svnの変更をチェックインしている間、それを適切にマージしなかったため、この破損が発生したと述べました。なんでも!このファイルを更新する他のチームがあるので、これは彼らの仕事を壊すでしょう。

  1. この特定のファイルを古い作業リビジョンに戻すコマンドは何ですか? (彼はローカルで彼の変更を持っているので、私はそれについて気にしません)

  2. これを行うための直接のコマンドがない場合、この混乱から抜け出す方法は何ですか。

  3. 私が読んだとき、私は何か「逆マージ」について聞いた。それは正確には何ですか、そしてそれは私を助けますか?

2
goldenmean

これが逆マージです。それはあなたが望むものを手に入れるでしょう。

  1. 必要なリビジョンと間違っているリビジョンを作業コピーパスにマージします。
  2. コードをテストする
  3. ファイルをリポジトリにコミットします

これで修正されたリビジョンがありますが、壊れたものはリポジトリに残ります。

マージコマンドは、最初のソース、2番目のソース、作業コピーパスの3つのパラメーターを取ります。ロールバックしているため、2つのソースのパスは同じですが、リビジョン番号が異なります。大きい方のリビジョン番号が最初になります。

コマンドラインの例:

merge svn://example.com/repo/folder/changedFile.txt@HEAD svn://example.com/repo/folder/changedFile.txt@215 ./folder/changedFile.txt

TortoiseSVNの[ログの表示]ボタンを使用すると、リビジョンを簡単に見つけることができます。

1
Chris Ting

[ログメッセージ]ウィンドウでファイル名を右クリックして、単一のファイルを逆マージすることもできます。

2
Vinix Wu

コミットメッセージに基づいて、ファイルの以前のリビジョン、つまりファイルを壊した変更を含まないリビジョンをダウンロードできるはずです。

確かに、最後に行ったチェックインには、ファイルの正しい作業バージョンが含まれています。マージするときは、通常、2つのソースを使用して、作業コピーまたは2つの別個のブランチのいずれかで、新しいソースを作成します。新しいリビジョンを作成するだけです。

最後のチェックインからファイルをダウンロードします。このファイルには、変更前の最後の作業コードが含まれている必要があります。 TortoiseSVNでは、リビジョン番号を指定して「チェックアウト」することでこれを行うことができます。おそらく、リポジトリを探索して(TortoiseSVNリポジトリエクスプローラーを使用して)、目的のリビジョン番号を特定する必要があります。

これは私がそれをする方法です、私のために以前に働きました:)

お役に立てれば。

0
jgemedina

TortoiseSVNはあなたのために逆マージを行うことができます。 SVNプロジェクトのログページに移動し、変更するリビジョンを右クリックして、[元に戻す]を選択します。

0
Jossie90