0

我们一直在使用Hgban来防止不必要的推送进入我们的中央存储库。但是,它停止了 x 个 Mercurial 版本的工作,这里报告了HgBan bug

看来这个项目已经“死”了,因此我想知道是否有人知道任何其他扩展做相同/类似的事情(=定义某些更改集以被阻止到存储库)?

4

1 回答 1

1

我写了一个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 会如何影响它,如果有的话。

于 2013-05-02T08:32:56.747 回答