src/servelog.py
changeset 67 fd16d9a1234b
parent 66 2f0ea1163b9e
child 68 a88134f77486
equal deleted inserted replaced
66:2f0ea1163b9e 67:fd16d9a1234b
     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(_('servelog 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()