Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mercurial-Hgban替代品_Mercurial - Fatal编程技术网

Mercurial-Hgban替代品

Mercurial-Hgban替代品,mercurial,Mercurial,我们一直在使用它来防止不必要的推送到我们的中央存储库。但它停止了对x个Mercurial版本的工作,这在这里有报道 这个项目似乎已经“死了”,因此我想知道是否有人知道还有其他扩展在做同样/类似的事情(=定义要阻止到存储库的某些更改集)?我编写了一个powershell钩子脚本来做你想做的事情。要使用它,请在中央回购的.hg\hgrc文件中放入以下行: [hooks] pretxnchangegroup = powershell .hg\hgban.ps1 powershell脚本如下所示,应放

我们一直在使用它来防止不必要的推送到我们的中央存储库。但它停止了对x个Mercurial版本的工作,这在这里有报道


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

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

您在HgBan中使用了什么类型的过滤器?阻止作者?关于提交消息?这可能有助于找到解决方案。我们使用hgban阻止某些变更集。如果发生了完全错误的情况,我们将这些变更集从我们的中央回购协议中剥离,通知所有开发人员在本地删除变更集,并在服务器上使用hgban通过其id阻止这些变更集,如果一些开发人员遗漏了这些信息。这是一个奇怪的工作流。通常情况下,您只需修复bug或撤销变更集,而不是编辑所有这些存储库的历史记录。这不是我们的“工作流”但是,如果有人意外地将开发/实验克隆推到我们的主回购协议,或者错误地合并了主回购协议上的一些命名分支,那么这是最后的手段。也许你可以编写一个
pretxnchangegroup
钩子来实现这一点。您可以将散列存储在一个文件中,并在该文件中搜索正在推送的修订。如果你说你的服务器运行在什么系统上,如果你不知道怎么做的话,也许有人可以帮你。它运行得很好。谢谢非常感谢!你能解释一下“$Env:HG_NODE`:tip”部分吗?我理解它的功能,但不理解语法。。。为什么“$HG_NODE:tip”不起作用?…顺便说一下-感谢您演示如何在powershell中编写钩子。我想我们是被迫使用python脚本的。使生活更轻松;)。这就是您在powershell$Env:VARIABLE\u NAME中引用环境变量的方式。`character是powershell中的转义字符,用于将环境变量与:。没问题,很乐意帮忙。