14

svn サーバーで、存在しないかのようにリビジョンを削除することは可能ですか?

そのため、次の改訂があります。

1004 // Commit of some bogus code that broke the build and was just wrong
1003 // Change 1.2
1002 // Change 1.1
1001
1000 *** Initial checkin

1004 が存在しなかったかのように、svn で 1004 を削除して 1003 に戻すことはできますか?

私の無知を許してください、私はまだSVNの使い方を学んでいます。

4

5 に答える 5

27

これらのアクシデントは起こりますが、SVN がそれらを履歴に残していれば問題ありません。重要なのは、事故を修正することです。これを行う方法は、このコミットによって行われた変更を元に戻すことです。次のコマンドを使用します。

svn merge -r [current_version]:[previous_version] [repository_url]
svn commit -m “Reverting previous commit and going back to revision [previous_version].”

TortoiseSVN を使用している場合は、ログを表示してコミットを選択し、コンテキスト メニューで [このリビジョンからの変更を元に戻す] を選択するだけです。作業コピーが以前のバージョンに変更されるので、コミットするだけです。

他のグラフィカル クライアントにも同じオプションがあると思います。

于 2011-08-26T09:29:26.177 に答える
15

VCS システムは、これを可能な限り複雑にするように特別に設計されています。通常は、これを行いたくありません。

そうは言っても、公式ドキュメントから:

ファイルまたはコミットのすべての証拠を破棄したい特殊なケースがあります。(誰かが誤って機密文書をコミットした可能性があります。) Subversion は意図的に情報を失わないように設計されているため、これはそれほど簡単ではありません。リビジョンは、相互に構築される不変のツリーです。履歴からリビジョンを削除すると、ドミノ効果が発生し、後続のすべてのリビジョンに混乱が生じ、すべての作業コピーが無効になる可能性があります。

svnadmin obliterateただし、このプロジェクトでは、情報を完全に削除するタスクを実行するコマンドをいつの日か実装する計画があります。(問題 516を参照してください。)

それまでの間、あなたの唯一の手段はsvnadmin dumpあなたのリポジトリにあり、それからダンプファイルをsvndumpfilter(悪いパスを除いて)svnadmin loadコマンドにパイプします。詳細については、Subversion ブックの第 5 章を参照してください。

http://subversion.apache.org/faq.html#removal

于 2011-08-26T09:13:20.093 に答える
0

現在のリポジトリのダンプを作成し、ダンプ内の偽のリビジョンをスキップできます。その後、同じサーバーまたは別のサーバーの新しいリポジトリにダンプをロードできます。

于 2011-08-29T00:24:58.270 に答える
0

削除する本当の理由 (スペース不足など) がない場合は、リビジョンを残すことをお勧めします。これは、変更を保持するための SVN サーバーの主な仕事です。

于 2013-12-20T08:37:47.230 に答える