2011-08-28 68 views
31

我有整個SVN存儲庫的工作副本,但是由於磁盤空間問題,我想將其更改爲稀疏工作副本。要做到這一點更改現有SVN工作副本的深度而無需重新下載

一種方法是:

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

但是,這會先刪除project1project2,然後重新下載它們。這非常不方便,因爲它們非常大,服務器的上傳速度非常低。我想這(與另一人,回購規模較小,部分作爲實驗):

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

但隨後的最後一個命令剛剛撤消第2

如何設置工作的深度沒有它立即更新/更改它,所以我可以有機會正確配置子目錄第一?

或者有另一種方法來完成我想要的,例如先將project1project2複製到安全位置?

回答

3

我結束了盜號的:

  • 手動爲projects編輯深度設置爲 「立即數」 *。
  • 硬刪除(不SVN刪除),除了project1projects所有兒童和project2
  • svn up projects

[*]爲此,在文本編輯器打開projects/.svn/entries,改變

b125e325-6f7c-4931-9942-d1ea1ea1441a 
X 

分成

b125e325-6f7c-4931-9942-d1ea1ea1441a 







immediates 
X 

注意:該UUID看起來的行可能是不同的每個回購,並且X實際上是十六進制值0x0C我不能顯示在這裏SO。

1

我有同樣的問題,但是你寫的東西似乎不可能在SVN 1.7中,因爲元數據格式看起來不同。

這就是我最終做的事情(在你的情況下使用目錄)。首先,我將project1project2複製到某個安全的地方。

svn co --depth immediates svn_url/projects 

這將檢查出projects空目錄project1project2。然後刪除空文件夾並將實際目錄放在其位置。 SVN給了我一些奇怪的消息,但它似乎工作,並允許我承諾。 (它不適用於--depth empty,然後複製文件夾,但immediates似乎工作。)

我同意這種情況並不理想,但這就是爲什麼我切換到未來項目的Git!我已經使用了SVN很長一段時間,但它已經超越了希望。

24

Woo hoo,我有這個問題,並且TortoiseSVN支持添加和刪除稀疏結帳項目的解決方案。 http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-checkout.html

1.要添加: 在Windows資源管理器中,右鍵單擊檢出的文件夾,然後使用TortoiseSVN? Repo-Browser打開資源庫瀏覽器。找到你想添加到你的工作副本的子文件夾,然後使用上下文菜單?更新項目以修改....

2.刪除; 從您的根目錄中,右鍵單擊/ Repo-Browser/Update項目以修改;然後選擇「排除」。

+9

您不必通過回購瀏覽器。 TortoiseSVN的上下文菜單具有「Update to revision ...」選項。只需右鍵單擊排除的文件夾本身而不是工作目錄根。當然,這假定你的路徑中存在一個存根文件夾(空的排除文件夾)。 – dobbs

0

沒有什麼像振興舊的SO問題。

我一直在處理一個非常類似的問題,我從trunk中分支創建一個發行包,但由於侷限性,我必須克隆僅用於dev的文件。

asset 
└── js 
    └── some 
     └── directories 
      ├── assets 
      │   ├── files ... 
      ├── dev  **<------------ This folder needs to be empty** 
      │   ├── apis 
      │   ├── campaign 
      │   ├── features 
      │   ├── modules 
      │   ├── main.js 
      │   └── tags 
      └── release 
       ├── apis 
         ├── data 
         ├── features 
         ├── modules 
         ├── main.js 
         └── tags 

我決定,我會排除dev的文件刪除的誘惑在錯誤的目錄補丁修復在發佈分支。

我做了很多稀疏結賬,以避免在樹幹中的大文件夾,但從未在工作副本上追溯過。看起來這非常簡單。

要修改工作副本以便asset/js/some/directories/dev爲空,只需在工作副本上再次運行svn co命令。

在我的情況下工作

svn co --depth empty ^/branches/releases/latest/asset/js/some/directories/dev \ 
asset/js/some/directories/dev 

你基本上是在運行預先存在的工作副本的部分結賬,這將在任何級別工作。在最初的情況下,您只需運行以下內容。

svn co --depth immediates ^/branches/mybranch/projects projects 
svn co --depth immediates ^/branches/mybranch/project1 project1 
svn co --depth immediates ^/branches/mybranch/project2 project2 

對於那些不知道插入符^對於庫根速記所以它就像在你的倉庫有點像../some/location的相對路徑。

這裏的關鍵是你沒有創建一個新的工作副本來解決你的問題。您正在現有工作副本上運行這些命令,並重置所選目錄的深度。

相關問題