簡體   English   中英

如何在 linux 服務器上存檔 Apache SVN 的舊修訂

[英]How to archive old revisions from Apache SVN on linux server

我有一個網站,用戶可以通過該網站編寫自己的劇本。

本劇本以修訂形式保存。

Apache SVN 已安裝。

我只想保存每個用戶文檔的最后 5 次修訂。

但問題出在后端,所有修訂都存儲在一個名為“Docsrepo”的文件夾中,並且在 1 個文件夾中分類為 1000 個修訂。 像這樣它有 234 個文件夾。

意思是 234*1000 次修訂。

現在我想存檔所有這些修訂以僅保留每個文檔的最后 5 個修訂。

我怎么做?

可以向 SVN 添加一個掛鈎,以便當用戶簽入新修訂版時,您可以放棄最舊的修訂版。 但是,您確實意識到 SVN 並沒有保留每個腳本的 1000*234 個完整副本,對嗎? SVN只保存了各個版本的差異。

如果您查看文件夾,您會看到每個修訂版都存儲為一個單獨的文件,因此您可以看到大小。 這些文件中的每一個實際上都存儲了簽入之間的增量或差異,因此它們應該非常小。

使用更高版本的 SVN,您可以運行“svnadmin pack”命令,將 1 個文件夾中的所有文件合並到一個更大的文件中。 這有助於提高性能,因為操作系統將能夠更好地緩存單個文件,但是,它僅適用於已滿的舊文件夾 - 即不會添加的文件夾。 不過運行它是安全的,而且您可以隨意運行它(有些人在每次簽到時運行它,有些人每周或每月運行一次)。

現在,您不能只刪除舊文件,因為您已經看到每個文件只包含它與之前修訂版之間的差異,因此如果您刪除舊文件,SVN 將無法重新創建整個文件基於隨時間的所有變化。

這有點復雜。 SVN 使用了一個名為skip-deltas的東西,它是“檢查點”,它存儲所有先前差異的匯總,這意味着您可以獲得更好的性能。 但是,這仍然不意味着您可以只刪除舊文件,除非您知道可以重新創建每個文件(而且我猜您不會知道每個文件實際發生了多少次簽入)。


所以..要回答你的問題:

您可以轉儲和加載您的存儲庫,忽略舊文件。 這涉及 svnadmin dump 和 svnadmin load 命令。 僅使用最后 5 個修訂號將存儲庫轉儲到轉儲文件中,然后將轉儲文件加載到新的存儲庫中。 (我認為還有基於日期的轉儲選項)。

請注意,您不能保留每個文件的最后 5 次修訂。 您只能轉儲一系列修訂。

顯然,這是一項手動的管理任務,通常用於刪除沒人會再看到的舊版本。 沒有自動“僅保留最后 5 個修訂版”選項。 然而,刪除修訂的需要很小,SVN 非常擅長保持快速性能,增量很小,因此不需要刪除歷史記錄。 如果您確實缺少磁盤空間,那么轉儲/加載選項是您最好的選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM