minimalistic state concept.
# states.py - introduce the state concept for mercurial changeset
#
# Copyright 2011 Pierre-Yves David <pierre-yves.david@ens-lyon.org>
# Logilab SA <contact@logilab.fr>
# Augie Fackler <durin42@gmail.com>
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
'''introduce the state concept for mercurial changeset
Change can be in the following state:
0 immutable
1 mutable
2 private
name are not fixed yet.
'''
STATES = (0, )
def statename(state):
return str(STATES)
import mercurial.context
import mercurial.templatekw
# Patch changectx
#############################
def state(ctx):
return ctx._repo.nodestate(ctx.node())
mercurial.context.changectx.state = state
# improve template
#############################
def showstate(ctx, **args):
return ctx.state()
mercurial.templatekw.keywords['state'] = showstate
def reposetup(ui, repo):
if not repo.local():
return
class statefulrepo(repo.__class__):
def nodestate(self, node):
return STATES[0]
repo.__class__ = statefulrepo