Mercurial - Hgban替代品

时间:2013-04-30 08:12:59

标签: mercurial

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

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

1 个答案:

答案 0 :(得分: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会如何影响它,如果有的话。