0

SVN に移行しようとしている StarTeam リポジトリがあります。残念ながら、レポは巨大なので、ポラリオン スクリプトなどを使用することはできません。StarTeam で各リリースのスナップショットをチェックアウトし、手動で SVN に追加/コミットすることに頼っています。

ただし、古いファイルをどうするかについては混乱しています。StarTeam では、purge コマンドによってファイルのすべてのコピーが削除されたため、削除されたファイルを「obsolete」フォルダに移動する必要がありました。SVNでそれを行う必要がないことは知っていますが、SVNは削除された/欠落しているファイルをどのように処理しますか?

次の構造の 3 つのファイルがあるとします。

trunk/
    Src/
        A.cpp
        B.cpp
        C.cpp

あるリリースから別のリリースに「C.cpp」を削除した場合、削除を SVN リポジトリに反映するには、すべての src をコミットする必要がありますか?

同様に、「C.cpp」を削除して「D.cpp」を追加した場合、コミットする前にすべての「src/」で add を呼び出す必要があります。不足しているファイルを検出して削除する際に問題が発生しますか? それらの数が多すぎて、手動で調べてすべてを個別に削除することはできません。

別の質問として、tortoiseSVN が追加/コミットする前に変更されたファイルを検出するのに約 3 時間かかる理由はありますか? ダイアログボックスに「お待ちください...」というメッセージが表示されるだけで、永遠にかかります。

ありがとう!

4

1 に答える 1

1

リポジトリに加えた変更にはコミットが必要なので、行った後はコミットするsvn delete必要がありますsvn commit。同様に、ファイルを追加する場合、それはコミットする必要のある変更です。どちらの場合も、コミットせずに追加と削除を元に戻すことができます。

1つのトランザクションでファイルを追加および削除するという点では、これも「正常に機能する」という点で、次のように効果的に発行されます。

svn delete C.cpp
svn add D.cpp
svn commit

削除されたファイルを回復したい場合は、svnリポジトリの以前のリビジョンからファイルを回復してから再コミットすることができます(SVNから削除されたファイルを復元する正しい方法は何ですか?も参照してください)。

ただし、ファイルを削除するときに覚えておく必要がある主なことは、Subversionツールを使用して削除する必要があることです(つまり、コマンドラインから、svn deleteまたはTortoiseSVN内でDeleteを使用して削除します。、、、またはWindows Explorerなどのファイルマネージャーを使用して削除するだけで、SVNにファイルが表示されますdelrm欠落」として「削除」ではなく、リポジトリのコミットは削除をコミットしません。したがって、次に作業コピーを更新するときに、欠落しているファイルが復元されます。したがって、subversionを使用してファイルを削除し、subversionが認識できるようにします。実際に削除してほしいということです。

最後の質問ですが、SVNのバージョンとリポジトリの大きさ(ファイル数の観点から)。基本的に、T-SVNはツリーをウォークし、各ファイルをリポジトリバージョンと照合して、変更されていることを確認する必要があります。SVN 1.7の時点で、作業コピーの形式が変更され、データベースに多くのメタデータが保持されています。元のコピーのストレージの改善(つまり、ファイルがsvnから出たときの外観)は、それよりも高速であることを意味します。だった。1.7を使用していない場合は、チェックする価値があります。また、大きなリポジトリがあり、その一部でしか機能しない場合は、スパースチェックアウトを使用してローカル作業コピーのサイズを縮小することを検討してください。簡単な概要またはスパースチェックアウトについては、Subversionから1つのファイルをチェックアウトするためのこの回答を参照してください。

于 2011-12-19T23:53:42.557 に答える