37

SVN リポジトリ全体の作業コピーを持っていますが、ディスク容量の問題のため、それをスパース作業コピーに変更したいと考えています。

これを行う1つの方法は次のとおりです。

svn up --set-depth immediates projects
svn up --set-depth infinity projects/project1
svn up --set-depth infinity projects/project2

ただし、最初に と を削除project1してからproject2、それらを再ダウンロードします。サイズが非常に大きく、サーバーのアップロード速度が非常に遅いため、これは非常に不便です。私はこれを試しました(実験として、レポの別の小さな部分で):

svn up --set-depth infinity projects/project1
svn up --set-depth infinity projects/project2
svn up --set-depth immediates projects

しかし、最後のコマンドは最初の 2 つを元に戻すだけです。

すぐに更新/変更せずに作業コピーの深さを設定するにはどうすればよいですか?最初にサブディレクトリを正しく構成する機会を得ることができますか?

または、最初にコピーして安全な場所に移動するなど、私が望むことを達成する別の方法はありproject1ますproject2か?

4

5 に答える 5

30

すごい、私はこの問題を抱えていました.TortoiseSVNは、スパースチェックアウトからアイテムを追加および削除するためのソリューションをサポートしています. http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-checkout.html

1.追加するには: Windows エクスプローラーで、チェックアウトしたフォルダーを右クリックし、TortoiseSVN を使用しますか? Repo-Browser を使用して、リポジトリ ブラウザーを起動します。作業コピーに追加するサブフォルダーを見つけて、コンテキスト メニューを使用しますか? アイテムをリビジョンに更新....

2.削除するには; ルートから、右クリック / Repo-Browser / アイテムをリビジョンに更新; [除外] を選択します。

于 2013-03-29T18:46:58.340 に答える
3

私はそれをハッキングしました:

  • *の深度設定を手動で「immediates」に編集しますprojects
  • およびprojects例外のすべての子を完全に削除します (SVN 削除ではありません)。project1project2
  • svn up projects

projects/.svn/entries[*] これを行うには、テキスト エディターで開き、

b125e325-6f7c-4931-9942-d1ea1ea1441a
X

の中へ

b125e325-6f7c-4931-9942-d1ea1ea1441a







immediates
X

注: UUID のように見える行はおそらくレポごとに異なり、X実際には 16 進値0x0Cであり、SO ではここに表示できません。

于 2011-08-28T20:05:37.213 に答える
1

私も同じ問題を抱えていましたが、SVN 1.7 ではメタデータの形式が異なるため、あなたが書いたことは不可能のようです。

これが私がやったことです(あなたの状況でディレクトリを使用して)。まず、コピーproject1project2て安全な場所に置きました。

svn co --depth immediates svn_url/projects 

projectsこれにより、空のディレクトリproject1とがチェックアウトされますproject2。次に、空のフォルダーを削除し、実際のディレクトリをその場所に配置します。SVN から奇妙なメッセージが表示されますが、動作しているようで、コミットできます。--depth empty(フォルダーをコピーしてからでは機能しませんが、機能immediatesするようです。)

この状況が理想的ではないことに同意しますが、それが将来のプロジェクトのために Git に切り替える理由です! 私は長い間 SVN を使用してきましたが、期待を超えています。

于 2012-09-29T01:39:57.303 に答える