Linux

如何防止全域 svn 更新?

  • June 29, 2011

我正在採取措施防止有人(即我)意外擦除生產伺服器。

我目前正在看SVN。我擔心有人可能會在svn update未指定要更新的任何文件的情況下意外發出命令,從而將整個程式碼庫更新為頭版本。

有沒有辦法防止這種情況發生?也許svn為檢查輸入的小傳遞腳本創建一個別名?

(我已經為 設置了別名,以防止人們rm一次刪除三個以上的文件,而沒有看到確認提示:alias rm='rm -I'?)

為您的生產環境使用標籤。始終標記您的版本,在測試環境中驗證這些標記(包括它們只有您真正想要的更改),然後在生產伺服器上使用svn switch(aka svn sw) 命令“更新”到該標記。

通過這種方式,意外svn up不會影響任何事情(前提是您遵循最佳實踐並且沒有在標籤中開發……)。

“現場修復”——即現在需要投入生產的快速錯誤修復——可以通過在主幹中進行修復,將目前生產標籤複製到新標籤,然後將主幹中的修復合併到標籤中來完成;然後使用相同的svn sw命令將生產提升到該標籤。

此外,使用@Shane 的評論svn export(導出您的標籤)是一個很好的評論,因為它保證您不會通過 Web 伺服器上的 .svn 文件夾洩漏修訂歷史數據。然後,您的升級過程將包括將標籤導出到新(空)文件夾,然後通過將目前生產文件夾重命名為其他內容來進行快速切換,然後將“暫存”文件夾重命名為生產文件夾的名稱。例如,在 Linux 中,它看起來像這樣:

mkdir staging
svn export http://www.example.com/path/to/your/tag staging/
mv production/ production-old/ && mv staging/ production/

這種方法的缺點是您不能使用 egsvn info來找出目前正在進行的標籤生產,但是如果您有良好的政策並遵循良好的做法,那麼您應該可以方便地獲得這些資訊——而且它應該是準確的——無論如何。

引用自:https://serverfault.com/questions/285398