我为rhodecode启用了rcextensions扩展,并复制了示例钩子,该示例允许验证文件大小,例如,如果文件大于给定大小,则拒绝它们。
我发现钩子不起作用:它允许所有文件,无论大小如何,经过一番挖掘后,我发现相关辅助函数缺少了mercurial的实现:
def get_hg_files(repo, vcs_repo, refs):
files = []
return files有人能建议如何实现这个函数,以获取新变更集中文件的信息吗?
我尝试过调整等效的git函数,注意到mercurial存储库对象包括一个更方便的get_diff方法。但我无法成功地获得相关的提交为回购,我想,因为他们还没有添加到回购。
def get_hg_files(repo, vcs_repo, refs):
files = []
for data in refs:
old_rev = data['old_rev']
new_rev = data['new_rev']
# These fail, as the commit is not found
old_commit = vcs_repo.get_commit(old_rev)
new_commit = vcs_repo.get_commit(new_rev)
vcs_diff = vcs_repo.get_diff(old_commit, new_commit)
diff_processor = diffs.DiffProcessor(vcs_diff, format='newdiff')
files = _parsed = diff_processor.prepare()
return files我意识到,我可以用一个纯汞钩作为替代,但我感兴趣的是在这里使用罗德克钩子。
发布于 2021-01-25 09:15:04
这是Mercurial的一个问题,在of扩展中,由于查看数据的对象仅位于Mercurial的内部钩子中,因此无法在of扩展内“优先”看到数据。我们仍在调查这一问题,但似乎需要将逻辑转移到钩子本身。对于SVN和GIT,这很好。
https://stackoverflow.com/questions/65866589
复制相似问题