我们一直在使用Hgban来防止不必要的推送进入我们的中央存储库。但是,它停止了 x 个 Mercurial 版本的工作,这里报告了HgBan bug。
看来这个项目已经“死”了,因此我想知道是否有人知道任何其他扩展做相同/类似的事情(=定义某些更改集以被阻止到存储库)?
我写了一个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
您应该在.hg文件夹中放置一个名为hgbanlist.txt的文本文件,其中包含每个被禁止修订的完整哈希,每行一个。例如,这是我的测试文件:
2baae3f879579979faa7aec2e32635b97e9eaff9
922ae67c4229788d21cb9c9ace1abeba38541ff9
这适用于纯 Mercurial 系统 - 我不知道 Rhodecode 会如何影响它,如果有的话。