2014-01-09 237 views
52

在我們的項目中,我們決定使用預先構建的二進制文件來縮短構建時間。每週/每月我們創建一個穩定版本並將其提交到存儲庫。構建使用這些二進制文件而不是從源代碼構建所有內容。減小.svn文件夾的大小

對於構建速度,這是太棒了。但是,毫不意外的是,它真的會使SVN結賬尺寸變大。我們的行李箱目前位於〜22   GB。我意識到這不是Subversion的預期用法。但目前我們沒有其他選擇。

但我想改善目前的情況。 .svn文件夾對磁盤上的主幹大小做出了重大貢獻。當二進制文件被更新時,它似乎在.svn文件夾中保留了幾個基地。也就是說,如果二進制文件是4   GB,則.svn中有一個副本。如果它已更新,那麼.svn文件夾將保留原始基數加上新基數,併爲該文件保留最大8個  GB。

是否有可能告訴Subversion不要在.svn文件夾中保留特定文件的基礎?通過谷歌我發現了一個類似的問題,How to decrease .svn folder size?

西蒙得到的答案

  • 使用部分結算(這不會爲我工作,我需要的二進制文件)
  • 這還不是顛覆的一個特徵
  • 它討論,但不會是一個功能,直到至少Subversion 1.8

幸運的是,我已經發布了subversion 1.8。是否添加了此功能?我不在the release notes中注意到它。雖然「減少目錄和財產儲存」看起來很有希望。

+1

這不是真正的顛覆閃耀的地方 - 你應該研究artifactory或nexus來存儲工件並用你的構建腳本來解決(獲取)它們。 – thekbb

+0

可悲的是我們知道這一點。但它使用svn非常方便。過去,在另一個項目中,我們使用了Maven。但是,顯然,這給很多人口中留下了不好的口味。接下來是一個自定義工具,我只能將它描述爲Maven(但當然,它解決了所有Maven的問題)。這也留下了不好的口味。在我們最新的項目中,我們剛剛結束了對svn的利用。 –

回答

49

在這一點上沒有辦法擺脫存儲原始數據的需要。它被討論過了,但它實際上並不是一個容易解決的問題,因爲有很多不同的用例情況會通過可選地刪除它們來呈現。

With 1.7 the pristine storage was changed在某些情況下,您實際上可能會看到情況比1.7更糟。現在,原始文件存儲在由原始文件的散列命名的文件中。所以如果你有多個相同的文件,你將不會有重複存儲的原始數據。但是,我們也不再清理原始數據。所以他們只是繼續建立起來。您可以使用svn cleanup來觸發未使用的原始文件。

如果你在不同的分支之間切換,我們不必再下載你已經擁有原始版本的東西了,這裏有一點要保留未使用的原始版本。

+0

謝謝Ben。我懷疑這將是答案。但我希望否則我想。 svn清理技巧很方便知道。我們猜測它可能會刪除多餘的原始數據,但尚未測試。我喜歡用md5來保存唯一的副本。但不刪除舊副本「似乎」不正確。分支交換是這種行爲支持的場景。但我「懷疑」更多的時候,舊的原始形式永遠不會再被使用。即它只會吸取磁盤空間。雖然我們的,未經推薦的使用svn使這成爲一個明顯的騙局,我認爲它也適用於正常的項目。 –

+0

我們同意,有一個問題打開這個:http://subversion.tigris.org/issues/show_bug.cgi?id=4071 –

+2

這很好,再加上[svn update --set-depth = exclude](http: //stackoverflow.com/a/8446590/1904815)這節省了我12個GiB。 – JonnyJD

19

對於使用TortoiseSVN客戶的清理命令,而不是svn cleanup命令的,.svn文件夾的大小可以通過確保真空原始拷貝選項被選中降低:

enter image description here

此外,建議清除工作副本的頂層,如here所示。

[編輯]

根據this answerSVN change logsvn cleanup有一個選項真空原始副本(/vacuum)。這從1.8開始默認完成。