我們一直在使用Hgban來防止不必要的推送到我們的中央存儲庫。它雖然停止了x數量的Mercurial版本的工作,在這裏報告了HgBan bug。Mercurial - Hgban的替代品
看來這個項目是「死」,因此我不知道是否有人知道任何其他擴展做相同/類似的事情(=定義某些變更集被阻止到存儲庫)?
我們一直在使用Hgban來防止不必要的推送到我們的中央存儲庫。它雖然停止了x數量的Mercurial版本的工作,在這裏報告了HgBan bug。Mercurial - Hgban的替代品
看來這個項目是「死」,因此我不知道是否有人知道任何其他擴展做相同/類似的事情(=定義某些變更集被阻止到存儲庫)?
我寫了一個powershell
鉤腳本來做你想做的事情。要使用它,你把下面幾行中您的中央回購的.hg\hgrc
文件:
[hooks]
pretxnchangegroup = powershell .hg\hgban.ps1
PowerShell腳本如下所示,應放在.hg文件夾:
# Default to success
$returnCode = 0
# Get the list of nodes being updated
$output = hg log -r "$Env:HG_NODE`:tip" --template "{node}`n"
# Get the list of nodes that are banned
$bannedList = Get-Content ".\.hg\hgbanlist.txt"
# Loop through the nodes
$output | Where-Object { $bannedList -contains $_ } | ForEach-Object {
Write-Host "Changeset $_ has been banned!"
$returnCode = 1
}
exit $returnCode
你應該把一個名爲的文本文件hgbanlist.txt在您的.hg文件夾中包含每個禁用修訂的完整散列,每行一個。例如,這裏是我的測試文件:
2baae3f879579979faa7aec2e32635b97e9eaff9
922ae67c4229788d21cb9c9ace1abeba38541ff9
此作品純水銀系統上 - 我不知道Rhodecode將如何影響它,如果在所有。
它工作得很好。謝謝!很多appricated! 你能解釋一下「$ Env:HG_NODE':tip」部分嗎?我明白它的作用,但不理解語法...爲什麼不「$ HG_NODE:tip」工作? – Roger 2013-05-02 08:57:44
...順便說一句 - 感謝您展示如何在PowerShell中編寫鉤子。以爲我們被迫使用python腳本。讓生活更容易;)。 – Roger 2013-05-02 09:04:58
這就是您在PowerShell ** $ Env:VARIABLE_NAME **中引用環境變量的方式。 '字符是powershell中的轉義字符,我正在使用它來將環境變量與:分開。沒問題,樂意幫忙。 – 2013-05-02 09:24:43
你在HgBan中使用哪種過濾器?阻止作者?在提交消息?這可能有助於提出解決方案。 – icabod 2013-04-30 16:19:03
我們使用hgban來阻止某些變更集。 如果推送的內容完全錯誤,我們會從中央倉庫中刪除這些變更集,並通知所有開發人員本地清除變更集,並在服務器上使用hgban阻止變更集的ID(如果某位開發人員錯過了此信息)。 – Roger 2013-04-30 18:01:30
這是一個奇怪的工作流程。通常情況下,您只需修復錯誤或退出變更集,而不是編輯所有這些存儲庫中的歷史記錄。 – 2013-04-30 19:57:15