diff --git a/pylons_app/lib/hooks.py b/pylons_app/lib/hooks.py --- a/pylons_app/lib/hooks.py +++ b/pylons_app/lib/hooks.py @@ -26,12 +26,13 @@ Created on Aug 6, 2010 import sys import os from pylons_app.lib import helpers as h +from pylons_app.model import meta +from pylons_app.model.db import UserLog, User def repo_size(ui, repo, hooktype=None, **kwargs): if hooktype != 'changegroup': return False - size_hg, size_root = 0, 0 for path, dirs, files in os.walk(repo.root): if path.find('.hg') != -1: @@ -43,6 +44,35 @@ def repo_size(ui, repo, hooktype=None, * size_hg_f = h.format_byte_size(size_hg) size_root_f = h.format_byte_size(size_root) - size_total_f = h.format_byte_size(size_root + size_hg) + size_total_f = h.format_byte_size(size_root + size_hg) sys.stdout.write('Repository size .hg:%s repo:%s total:%s\n' \ % (size_hg_f, size_root_f, size_total_f)) + + user_action_mapper(ui, repo, hooktype, **kwargs) + +def user_action_mapper(ui, repo, hooktype=None, **kwargs): + """ + Maps user last push action to new changeset id, from mercurial + @param ui: + @param repo: + @param hooktype: + """ + + try: + sa = meta.Session + username = kwargs['url'].split(':')[-1] + user_log = sa.query(UserLog)\ + .filter(UserLog.user == sa.query(User)\ + .filter(User.username == username).one())\ + .order_by(UserLog.user_log_id.desc()).first() + + if not user_log.revision: + user_log.revision = str(repo['tip']) + sa.add(user_log) + sa.commit() + + except Exception, e: + sa.rollback() + raise + finally: + meta.Session.remove()