# Copyright 2008-2009 LShift Ltd## Authors:# Paul Crowley <paul@lshift.net>## This software may be used and distributed according to the terms# of the GNU General Public License, incorporated herein by reference.from mercurial.i18n import _import mercurial.utilimport mercurial.nodeimport osimport timefrom mercurialserver import ruleset, changesdef hook(ui, repo, hooktype, node=None, source=None, **kwargs): if hooktype == 'changegroup': op = "push" elif hooktype == 'outgoing': op = "pull" else: raise mercurial.util.Abort(_('servelog installed as wrong hook type,' ' must be changegroup or outgoing but is %s') % hooktype) t = time.strftime("%Y-%m-%d_%H:%M:%S", time.gmtime()) user = ruleset.rules.get('user') # FIXME: lock it log = open(repo.join("serve-log"), "a+") try: for ctx in changes.changes(repo, node): log.write("%s %s key=%s changeset=%s\n" % (t, op, user, mercurial.node.hex(ctx.node()))) finally: log.close()