src/logging.py
changeset 59 f96de2d99f00
parent 58 207a413897b4
child 60 909f3801ee44
child 62 f1e319d3672a
equal deleted inserted replaced
58:207a413897b4 59:f96de2d99f00
     1 # Copyright 2008-2009 LShift Ltd
       
     2 #
       
     3 # Authors:
       
     4 # Paul Crowley <paul@lshift.net>
       
     5 #
       
     6 # This software may be used and distributed according to the terms
       
     7 # of the GNU General Public License, incorporated herein by reference.
       
     8 
       
     9 from mercurial.i18n import _
       
    10 import mercurial.util
       
    11 import mercurial.node
       
    12 
       
    13 import os
       
    14 import time
       
    15 import changes
       
    16         
       
    17 def hook(ui, repo, hooktype, node=None, source=None, **kwargs):
       
    18     if hooktype == 'changegroup':
       
    19         op = "push"
       
    20     elif hooktype == 'outgoing':
       
    21         op = "pull"
       
    22     else:
       
    23         raise mercurial.util.Abort(_('logging installed as wrong hook type,'
       
    24             ' must be changegroup or outgoing but is %s') % hooktype)
       
    25     t = time.strftime("%Y-%m-%d_%H:%M:%S", time.gmtime())
       
    26     user = os.environ['REMOTE_USER']
       
    27     # FIXME: lock it
       
    28     log = open(repo.join("serve-log"), "a+")
       
    29     try:
       
    30         for ctx in changes.changes(repo, node):
       
    31             log.write("%s %s key=%s changeset=%s\n" % 
       
    32                 (t, op, user, mercurial.node.hex(ctx.node())))
       
    33     finally:
       
    34         log.close()
       
    35