Mercurial

Mercurial 儲存庫損壞

  • December 22, 2011

這與這個問題有些相關,但這是一個不同的問題。

我們有一個中央 Hg 儲存庫,通過 SSH 和mercurial-server為使用者提供服務。我們有許多 Mac、Linux 和 Windows 客戶端連接到它。

現在已經發生了兩次,其中一位 Windows 使用者損壞了他們的儲存庫,然後將其推回了中央儲存庫。我想在中央儲存庫上編寫一個傳入的鉤子腳本,以防止交易被接受,如果它會破壞中央儲存庫。

雖然不幸的是,我對 Mercurial 的了解還不夠,無法編寫這樣的腳本。有沒有其他人遇到過這種情況的可能性?就我個人而言,我不太確定為什麼 hg 預設情況下不這樣做。

Mercurial 的最新版本(自 1.5 起)支持驗證傳入數據。添加

[server]
validate = True

到伺服器的 hg 配置(或者.hg/hgrchgwebdir 配置應該可以正常工作)讓伺服器驗證傳入數據並拒絕無效推送。然後,客戶端將看到類似於以下內容的錯誤:

remote: abort: missing file data for beta:dddc47b3ba30e54484720ce0f4f768a0f4b6efb9 - run hg verify

希望有幫助!

也許您應該完全避免推送到儲存庫。借助 Mercurial 及其分佈式特性,每個人都可以擁有自己的分支,當他們覺得自己準備好時,他們會告訴你,然後你就可以從他們那裡撤出。沒有送出訪問問題,沒有會破壞東西的推送……

這至少是我的一個朋友在我從 SVN 遷移到 Mercurial 時給我的建議。

我不知道,如果這對你來說是一個選項,但是為每個人設置一個個人儲存庫,然後從你需要的人那裡提取可能需要更少的工作,而不是試圖捕捉危險的推送。

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