changeset 2998:433428ffd13b beta

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
author Marcin Kuzminski <marcin@python-works.com>
date Sat, 10 Nov 2012 14:50:11 +0100
parents da3926d9e56e
children cb5cd7516bc3
files rhodecode/lib/helpers.py rhodecode/lib/hooks.py
diffstat 2 files changed, 32 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/lib/helpers.py	Sat Nov 10 03:21:31 2012 +0100
+++ b/rhodecode/lib/helpers.py	Sat Nov 10 14:50:11 2012 +0100
@@ -521,10 +521,23 @@
 
         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 @@
             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 @@
                         'short_id': rev[:12],
                         'raw_id': rev,
                         'message': '',
+                        'op': _op,
+                        'ref_name': _name
                     })
                     revs.append(_rev)
         cs_links = []
--- a/rhodecode/lib/hooks.py	Sat Nov 10 03:21:31 2012 +0100
+++ b/rhodecode/lib/hooks.py	Sat Nov 10 14:50:11 2012 +0100
@@ -412,11 +412,17 @@
                                          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)