我并不是非常倾向于使用文件系统来操作权限,因为这不会为我的同事提供非常有用的错误消息。我能够使用prechangeset hook来完成这个(在 mercurial 2.3 中) 。首先,创建一个文件(在本例中为 .hg/deprecated.py)以将挂钩存储在您希望弃用的共享存储库中:
# .hg/deprecated.py
import sys
import textwrap
# print out a helpful error message in red to make it obvious things
# are not working
msg = "ERROR: Pushing changesets into this repository is no longer supported. "
msg += "This package has been merged into the /path/to/new/repo repository."
print('\033[%im%s\033[0m'%(31, textwrap.fill(msg)))
# return a non-zero exit code to disallow the changeset to be added to the
# target repository
sys.exit(1)
然后通过将以下内容添加到您的 .hg/hgrc 文件中,告诉 mercurial 在将任何变更集添加到存储库之前执行此挂钩:
# .hg/hgrc
[hooks]
prechangegroup.deprecate = python .hg/deprecate.py
此解决方案同时提醒编码人员存储库未处于活动状态,指示编码人员应将更改提交到何处,并防止编码人员将代码提交到已弃用的存储库。虽然这不像操纵文件系统权限那样永久的解决方案,但它确实指导人们在哪里可以找到新的存储库。希望其他人觉得这很有用!