# HG changeset patch # User Marcin Kuzminski # Date 2012-11-10 14:50:11 # Node ID 433428ffd13bfbfa6273e54370f4e53eec0dd4fd # Parent da3926d9e56e821e70681a4b3996b8b3a7cc44fc fixes #645 Fix git handler when doing delete remote branch - journal will now display nicer labels for create tag, and delete branch operations for git diff --git a/rhodecode/lib/helpers.py b/rhodecode/lib/helpers.py --- a/rhodecode/lib/helpers.py +++ b/rhodecode/lib/helpers.py @@ -521,10 +521,23 @@ def action_parser(user_log, feed=False, def lnk(rev, repo_name): if isinstance(rev, BaseChangeset) or isinstance(rev, AttributeDict): - lbl = '%s' % (rev.short_id[:8]) - _url = url('changeset_home', repo_name=repo_name, - revision=rev.raw_id) - title = tooltip(rev.message) + lazy_cs = True + if getattr(rev, 'op', None) and getattr(rev, 'ref_name', None): + lazy_cs = False + lbl = '?' + if rev.op == 'delete_branch': + lbl = '%s' % _('Deleted branch: %s') % rev.ref_name + title = '' + elif rev.op == 'tag': + lbl = '%s' % _('Created tag: %s') % rev.ref_name + title = '' + _url = '#' + + else: + lbl = '%s' % (rev.short_id[:8]) + _url = url('changeset_home', repo_name=repo_name, + revision=rev.raw_id) + title = tooltip(rev.message) else: ## changeset cannot be found/striped/removed etc. lbl = ('%s' % rev)[:12] @@ -533,12 +546,16 @@ def action_parser(user_log, feed=False, if parse_cs: return link_to(lbl, _url, title=title, class_='tooltip') return link_to(lbl, _url, raw_id=rev.raw_id, repo_name=repo_name, - class_='lazy-cs') + class_='lazy-cs' if lazy_cs else '') revs = [] if len(filter(lambda v: v != '', revs_ids)) > 0: repo = None for rev in revs_ids[:revs_top_limit]: + _op = _name = None + if len(rev.split('=>')) == 2: + _op, _name = rev.split('=>') + # we want parsed changesets, or new log store format is bad if parse_cs: try: @@ -555,6 +572,8 @@ def action_parser(user_log, feed=False, 'short_id': rev[:12], 'raw_id': rev, 'message': '', + 'op': _op, + 'ref_name': _name }) revs.append(_rev) cs_links = [] diff --git a/rhodecode/lib/hooks.py b/rhodecode/lib/hooks.py --- a/rhodecode/lib/hooks.py +++ b/rhodecode/lib/hooks.py @@ -412,11 +412,17 @@ def handle_git_receive(repo_path, revs, heads.splitlines())) cmd = (('log %(new_rev)s' % push_ref) + ' --reverse --pretty=format:"%H" --not ' + heads) + git_revs += repo.run_git_command(cmd)[0].splitlines() + + elif push_ref['new_rev'] == EmptyChangeset().raw_id: + #delete branch case + git_revs += ['delete_branch=>%s' % push_ref['name']] else: cmd = (('log %(old_rev)s..%(new_rev)s' % push_ref) + ' --reverse --pretty=format:"%H"') - git_revs += repo.run_git_command(cmd)[0].splitlines() + git_revs += repo.run_git_command(cmd)[0].splitlines() + elif _type == 'tags': - git_revs += [push_ref['name']] + git_revs += ['tag=>%s' % push_ref['name']] log_push_action(baseui, repo, _git_revs=git_revs)