2014-03-27 110 views
3

我是新來的是一個純粹的程序員/工程師(雖然我「需要」的編碼有許多經過多年的努力和執行)。現在我發現自己需要設置一個版本控制環境。我熟悉SVN,但想知道有沒有才去設置它的麻煩「功能」,並確定實施什麼樣的文件結構。顛覆功能

在一個項目中,我有幾個頻繁變化的文件,但我不想保留以前的版本,因爲它們會很快吞噬磁盤空間。 SVN是否有一個功能,您可以設置該屬性存儲庫中的文件(或文件夾)只保留最新版本的文件? (或者可能只是n個最新版本?)

如果SVN沒有這個功能,那麼有沒有其他的版本控制系統呢?

預先感謝您的考慮這個問題的......

+2

你真的不需要它。 SVN只針對特定版本保留差異 - 而不是整個文件。就我個人而言,我從來沒有聽說有人因磁盤空間不足而因爲一個SVN存儲庫, – ElmoVanKielmo

+0

@ElmoVanKielmo,雖然我同意你的觀點,但你現在很幸運,因爲使用不當,你現在很幸運能夠遇到一個用SVN運行空間不足的人以往。我已經悔改了,但是,很久以前,在一個遙遠的星系中......我使用SVN來存儲經常變化的非文本資產,如圖像,其他媒體和編譯代碼。從理論上來看,這似乎是一個好主意,可以集中並製作簡單的發佈過程和delpoyment(它的確如此),但現實的錘子最終陷入了困境...... – Ray

回答

2

SVN跟蹤變更集,而不是整個文件,不,你不能刪除它們。

額外的忠告: 我不擔心磁盤空間用於回購協議,如果我是你,也許需要一些時間重新考慮爲什麼文件改變非常頻繁,整個磁盤空間得到填補。這是否需要版本控制?如果是這樣,你可能不會真的想吹走歷史。

此外,我建議使用更現代的版本控制工具,如git或mercurial。

下面是關於使用git結算的磁盤空間,類似的帖子:

如在下面評論指出,如果你是這個新的版本控制任何的上述功夫可能會導致腳部斷裂;)

+0

我也推薦這樣做,但它們不提供解決方案/對這個問題的答案。 –

+0

@ErwinBolwidt看到我更新的答案,其中git可能有所幫助 – Ray

+0

是和不是 - 初學者當然不應該用'git'做什麼,因爲它重寫了歷史記錄,所以需要與克隆所修改存儲庫的每個人進行協調通過這種方式。 –

2
  1. 我猜測,文件您擔心不應該被存放在版本控制sytsem可言。常見的方式使用Apache Subversion或任何其他來源的控制系統是來存儲從自己的源文件(例如自動生成的文件,大型二進制文件或磁盤映像)建立文件。換句話說,如果你建立一個可執行文件,你應該保存它的源代碼,而不是編譯的可執行文件。

  2. 目前還不清楚您關注的文件類型是什麼。什麼是文件類型和文件的大小?

    • 如果該文件是文本,那麼你不必擔心存儲庫的大小,請參閱@ ElmoVanKielmo對你的問題發表評論。 Subversion非常有效地在文本文件的修訂之間存儲變化量。

    • 如果文件很大並且是二進制的,那麼你仍然可以將它存儲在Subversion版本庫中,但是我不會在版本庫中存儲大於1GB的文件。

  3. Apache Subversion沒有這樣的功能,可以從存儲庫歷史記錄中完全自動刪除文件。Subversion is designed to never lose information that exists in the repository。但是,您可以將大文件存儲在專用分支中,並使用repository history filtering不時將其清理乾淨。

  4. 要注意的是斷開/分佈式版本控制有它在存儲大量的二進制文件方面的不足:

    使用Git,大家誰不git clone必須下載整個倉庫與大型二進制文件的所有版本,因此可能會耗費時間和帶寬。我會說Git不適合存儲二進制文件,而不是Subversion。


...纔去設置它,並確定哪些 文件結構來實現的麻煩。

安裝和配置Subversion服務器並不麻煩。您可以通過the list of Apache Subversion Binary Packages查看爲您的平臺獲取一個。將服務器配置爲通過HTTP(S) (Apache HTTP Server)svn:// (svnserve)協議公開您的存儲庫。

如果您使用的是Windows,則可能需要嘗試VisualSVN Server,它們可以通過幾次點擊來安裝和配置完整的服務器軟件包,從而爲您節省大量時間。