4

私は Source Safe から来た Subversion に比較的慣れていません。Tortoise インターフェイスを使用して、コミットは私の bin ディレクトリにある .java ファイルを表示し続けましたが、それは「行方不明」でした - わかりました、それは別の質問です。基本的に、偽の「bin」メッセージを取り除くためにいくつかのことを試みたところ、Tortoise は代わりにソース ディレクトリ全体を削除しました。追加し直してみたのですが、追加したら履歴がなくて新しくなりました。

Subversion を特定のリビジョンに戻すには? あたかも私が決して起こらなかったかのように?VSS でこれを行う方法は知っていますが、TortoiseSVN で試行するたびに、作業コピーが変更されるだけです。作業コピーをチェックインしたくありません。履歴がすべて失われるからです。Subversion は忘れることができますか?

ところで、すでにstackoverflowを調べてみましたが、私が見つけた最も近いものは、リポジトリ全体のエクスポートと再インポートでした。私はまだその時点ではないと思います。Subversion は、この最も単純なことを実行できなければなりません!

4

3 に答える 3

7

Subversionは忘れませんが、次のようなことができます。

現在のリビジョンが100で、リビジョン70に戻りたいとします。70とまったく同じリビジョン101を作成します。

1)きれいな作業コピーをチェックしてください。

2)変更を(逆方向に)マージします。

svn merge -r100:70 http://repo.com/my/project/trunk

3)健全性を確認します。あなたの作業コピーはまさにあなたが望んでいたものですか?もしそうなら:

svn commit -m "rolled back to the good old days of r70「」

于 2010-06-27T19:58:39.133 に答える
4

TortoiseSVNについて具体的に質問したので、次のことができます。

  • 作業ディレクトリを右クリックします
  • TortoiseSVN
  • リビジョンへの更新
  • ログをクリックします
  • 必要なリビジョンを選択します(これにより、リビジョン番号が[リビジョン]ボックスに表示されます。リビジョン番号がわかっている場合は、すぐに入力できます)。
  • [OK]をクリックします

次に、適切なメッセージを使用して変更をリポジトリにコミットします。

于 2010-06-27T20:17:36.073 に答える
2

SVN を元に戻すことはありません。作業コピーを取り戻してからコミットします。

編集:コマンドが何であるか(IE、cpの代わりにsvn cp)に応じて、Subversionはファイルの祖先(履歴)を記憶します。

逆マージするか、コピーすることができます。これには、おそらくコピーの方が適しています。

私がそれをするつもりなら、私はするだろう:

svn update
svn rm directory
svn ci -m "temporarily removed the content"
svn cp -r [revision] directory ./directory
svn ci -m "copied revision [revision] to current"

ただし、それを行うためのおそらくより良い方法は次のとおりです。

svn update
svn merge -r HEAD:[revision] directory directory
svn ci -m "reverted back to [revision]"

「ディレクトリ」を配置した場所の一部については、たとえば、ルート ディレクトリを削除したばかりの場合 (したがって、参照するものが何も残っていない場合)、リポジトリ内の場所の URL を使用する必要がある場合があります。それまたはマージのいずれかで、最初のものはレポへのURLで、2番目のものはローカルディレクトリです...ただし、ローカルディレクトリを2回使用するだけでおそらく機能します。

覚えとけ; 正しく動作しない場合は、チェックインしないでください:D (これは 2 番目の方法を使用する利点です... また、必要なデータ転送が少なくて済みます)

于 2010-06-27T19:54:46.710 に答える