# hgrc/public -- repository configuration for public committed history

[extensions]
evolve =
topic =

[phases]
# Any draft-phase changesets pushed here transition to public-phase.
publish = true

[server]
# Serve only public changesets -- don't serve draft-phase changesets
# (or secret-phase, of which there should be none; and certainly not
# hidden changesets, which should not be possible for public-phase).
view = immutable

[hooks]
# Reject files that collide in normalization or case, so that this
# repository can be safely checked out on, e.g., macOS HFS+ or APFS.
pretxnchangegroup.reject_normcasecollision = python:netbsd_hghooks.reject_normcasecollision.hook

# Reject merge commits on a branch.  We only do linear history for now.
pretxnchangegroup.reject_merge_commits = python:hgext.hooklib.reject_merge_commits.hook

# Reject new heads on existing branches.  Developers must rebase local
# changes before pushing.
pretxnclose.reject_new_heads = python:netbsd_hghooks.reject_new_heads.hook

# Reject bookmarks.
prepushkey.reject_bookmarks = python:netbsd_hghooks.reject_bookmarks.hook

# Notify on transition from draft to public or to
# obsolete-without-successor.
#
# XXX Shouldn't draft to obsolete-without-successor be done in the
# draft view?
txnclose-phase.changeset_published = python:hgext.hooklib.changeset_published.hook
txnclose.changeset_obsoleted = python:hgext.hooklib.changeset_obsoleted.hook

# Tell git it's time to fetch when we have new changesets.
txnclose.gitmirror = python:netbsd_hghooks.gitmirror.hook
