4

私はSVNを初めて使用し、問題についてかなり混乱しています。TortoiseSVNを使用しています。

プロジェクトのリビジョン8とそれ以降のリビジョン11があります。11までは簡単なプロセスでしたが、今はrev 8に戻る必要があります。これは、途中でタグ付けされており、そこからカウントされます。私はすでにrev8の作業コピーを作成し、いくつかの変更を加えました。

トランクの「テープをrev8に巻き戻し」、最近のトランクのブランチを作成し、rev8で変更をコミットして、結果がトランクになるようにするにはどうすればよいですか。

すべてに出くわしたドキュメントは、分岐とタグ付け(リポジトリの実際の最上位バージョン)について無限のページを書いていますが、過去のリビジョンでのこれらの操作については書いていません。

4

6 に答える 6

3
svn merge -r11:8 path/

8 から 11 までのすべての変更を「元に戻します」。

于 2012-06-19T22:09:26.710 に答える
2

まず、最新の変更を分岐しましょう。分岐に完全な URL を使用するのが好きです。

$ svn cp svn://localhost/trunk svn://localhost/branches/foo  #Creating branch foo

これで、9 以降の変更を削除できます。

$ svn merge -rHEAD:8 .

リビジョン 8 に使用したタグを指定する必要がなかったことに注意してください。これは、リビジョン番号がタグとして機能するのに非常に適しているためです。私は通常、興味深いリビジョンのみにタグを付けます -- 開発から外れるリビジョン、または後で何らかの理由で重要になると思われるリビジョンです。

ところで。私は逆の順序で物事を行うこともできました:

$ svn merge -r11:8 .   #Remove changes 9 through 11
$ svn commit -m "Removing yucky stuff"   #Creates revision #12

おっとっと!リビジョン 11 を分岐する必要がありました。今やろう:

$ svn copy -r11 . svn://localhost/branches/foo   #Revision #11 is now branch "foo"

また、完全な URL を使用したい場合:

$ svn copy -r11 svn://localhost/trunk@11 svn://localhost/branches/foo
于 2012-06-20T02:00:33.023 に答える
1
  1. ヘッドリビジョンをチェックしてください
  2. ログを開く
  3. 新しいヘッドになりたいリビジョンを右クリックします
  4. [このリビジョンに戻す]をクリックします
  5. 専念
于 2012-06-20T12:47:35.283 に答える
0
  1. チェックアウトトランク。

  2. 別のディレクトリでr8をエクスポートします(svnexport)。これにより、「。svn」メタディレクトリが回避されます。

  3. すべてのr8ファイルをトランクにコピーします。

  4. 専念。

(5.トランクにr8にない追加のファイルがある場合は、それらを手動で「svnremove」する必要があります)。

おそらく推測できるように、これは実際には「テープを巻き戻す」ことではありません。代わりに、テープは前進し続けますが、このようにすると、r12は偶然にもr8とまったく同じように見えます。:-)

于 2012-06-19T22:06:52.720 に答える
0

特定のリビジョンからブランチを作成するには、「マージ/ブランチ...」を選択し、ラジオボタン「リポジトリ内の特定のリビジョン」をチェックして、リビジョン番号(11)を入力します。

トランクをリビジョン8の状態に戻すには、[ログの表示...]を選択し、ロールバックするリビジョン(8)を選択して右クリックし、[このリビジョンに戻す]を選択します。次にコミットします。これにより、リビジョン8と同じ追加のリビジョン(13)が作成されます。

リビジョン13をリビジョン11から作成したブランチにマージしないように注意してください。これにより、ブランチ内の変更もロールバックされます。それが起こらないようにするには、リビジョン13をトランクからブランチにマージしますが、[マージのみを記録する]チェックボックスを選択します(IIRC)

于 2012-06-19T22:17:05.013 に答える
0

ここでは別の情報、したがって回答です(ただし、@ David_W、@ maxim1000、および@ Wrikkenの回答は仕事をするのに役立ちます)。

多くの人がつまずくのは、Subversion では各ブランチの先頭でしか作業できないということです。それはしかしではなく、特徴です。したがって、履歴を書き換えることはできず、誰も履歴を変更しないので安全です。

これが、(抽象化された) 手順を実行する必要がある理由です。

  1. 現在のバージョンをローカルでチェックアウトします。
  2. ローカル コピーにリバース パッチを適用します (逆の順序で r8 から r11 を意味します)。
  3. これらの変更をコミットして、作業コピーの新しいコンテンツ (リビジョン 8 とまったく同じ) が HEAD に移動するようにします。
于 2012-07-01T11:38:12.247 に答える