以前のバージョンに戻したいSVNリポジトリに、以下に示すようなファイルがあります。 SVNでこれを行う方法は何ですか?この特定のファイルをレポジトリ全体ではなく、古いバージョンにダウングレードしたいだけです。
ありがとう。
$ svn log myfile.py
----------------------
r179 | xx | 2010-05-10
Change 3
----------------------
r175 | xx | 2010-05-08
Change 2
----------------------
r174 | xx | 2010-05-04
Initial
作業コピーに古いファイルだけが必要な場合:
svn up -r 147 myfile.py
ロールバックする場合は、この「 subversionでコードの古いバージョンに戻る方法? 」を参照してください。
svn catはリビジョン引数も取ります!
svn cat -r 175 mydir/myfile > mydir/myfile
svn revert filename
これにより、単一のファイルが元に戻ります。
単一のファイルの場合、次のことができます。
svn export -r <REV> svn://Host/path/to/file/on/repos file.ext
svn revert <file>
を実行できますが、それは最後の作業コピーのみを復元します。
これまでのところ、ここでのすべての答えは重大な欠点を持っているようで、複雑です(リポジトリURIを見つける必要があります)、または質問がおそらく求めていたものを実行しません:リポジトリを再び稼働状態にする方法ファイルの古いバージョンで。
svn merge -r head:[revision-number-to-revert-to] [file-path]
はIMOでこれを行う最もクリーンで簡単な方法です。deletedファイルを元に戻すことは、この方法では機能しないようであることに注意してください[1]。次の質問も参照してください。 ファイルの以前のSVNリビジョンに戻すより良い方法?
[1] svn cp -r [rev-number] [repo-URI/file-path]@[rev-number] [repo-URI/file-path] && svn up
が必要な場合は、 SVNから削除されたファイルを復元する正しい方法は何ですか も参照してください。
最善の方法は次のとおりです。
svn merge -c -RevisionToUndo ^/trunk
取り消したくないファイルを単に元に戻すのではなく、リビジョンのすべてのファイルを元に戻します。リビジョンのプレフィックスとしてダッシュ(-
)を忘れないでください。
svn revert File1 File2
次に、変更をコミットし直します。
やりたい
svn merge -r [revision to revert from]:[revision to revert to] [path/filename]
これを行うと、ファイルのそのリビジョンがコミット可能状態になります。ファイルをコミットします。
svn cat
コマンドを使用してこれを行うのは簡単なので、リビジョンを指定する必要さえありません。
svn cat mydir/myfile > mydir/myfile
これはおそらく、タイムスタンプなどのiノード(メタデータ)データをロールバックしません。
コメントするのに十分な担当者がいないので、@ Mitch Dempsyの回答に追加するだけです。
svn export -r <REV> svn://Host/path/to/file/on/repos --force
--forceを追加すると、ローカルコピーがエクスポートで上書きされ、svn commitを実行してリポジトリにプッシュできます。
数個のファイルのみで、Tortoise SVNを使用している場合は、次のアプローチを使用できます。
誰もこれに言及していないことに驚いた
リビジョン番号を見つけることなく、これを書くことができます。元に戻したいものをコミットした場合、他のファイルを変更し、ターゲットファイルが最後に変更されたファイルではない場合、これは機能しません
svn merge -r HEAD:PREV file
特定のリビジョンから個々のファイルをロールバックし、コミットできるようにする場合は、次を実行します。
svn merge -c-[OldRev#] [ファイル名]
すなわち。 svn merge -c -150 myfile.py
リビジョン番号のマイナスに注意してください
単一ファイルの代替オプションは、ファイルの現在のバージョンを古いリビジョンに「置き換える」ことです。
svn rm file.ext
svn cp svn://Host/path/to/file/on/repo/file.ext@<REV> file.ext
svn ci
これには、このファイルのログ(つまり、svn log file.ext)に不要な変更が表示されないという追加機能があります。
Sudo svn revert filename
これは、単一のファイルを元に戻すより良い方法です