/loggerhead/trunk

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/loggerhead/trunk

« back to all changes in this revision

Viewing changes to loggerhead/controllers/annotate_ui.py

  • Committer: Jelmer Vernooij
  • Date: 2018-06-09 07:26:34 UTC
  • mto: (491.6.1 breezy)
  • mto: This revision was merged to the branch mainline in revision 494.
  • Revision ID: jelmer@jelmer.uk-20180609072634-cwklrpi8udykluwi
HACKING => HACKING.rst.

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
# Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335  USA
17
17
#
18
18
 
19
 
from datetime import datetime
20
19
import itertools
21
20
 
22
 
from ..controllers.view_ui import ViewUI
23
 
from .. import util
 
21
from loggerhead.controllers.view_ui import ViewUI
 
22
from loggerhead import util
24
23
 
25
24
class AnnotateUI(ViewUI):
26
25
 
27
 
    def annotate_file(self, path, info):
 
26
    def annotate_file(self, info):
 
27
        file_id = info['file_id']
28
28
        revid = info['change'].revid
29
 
        if not isinstance(revid, bytes):
30
 
            raise TypeError(revid)
31
 
 
32
 
        tree = self.tree_for(path, revid)
33
 
 
 
29
        path = self._history.get_path(revid, file_id)
 
30
        
 
31
        tree = self.tree_for(file_id, revid)
 
32
        
34
33
        change_cache = {}
35
34
        last_line_revid = None
36
35
        last_lineno = None
39
38
        revisions = {}
40
39
 
41
40
        lineno = 0
42
 
        for (line_revid, text), lineno in zip(tree.annotate_iter(path), itertools.count(1)):
 
41
        for (line_revid, text), lineno in zip(tree.annotate_iter(path, file_id), itertools.count(1)):
43
42
            if line_revid != last_line_revid:
44
43
                last_line_revid = line_revid
45
44
 
46
45
                change = change_cache.get(line_revid, None)
47
46
                if change is None:
48
 
                    changes = self._history.get_changes([line_revid])
49
 
                    if changes:
50
 
                        change = changes[0]
51
 
                    else:
52
 
                        change = util.Container(
53
 
                            authors='', date=datetime.now(), revno='')
 
47
                    change = self._history.get_changes([line_revid])[0]
54
48
                    change_cache[line_revid] = change
55
49
 
56
50
                try:
77
71
        revisions[last_lineno].revspan = lineno - last_lineno + 1
78
72
 
79
73
        return revisions
80
 
 
 
74
            
81
75
    def get_values(self, path, kwargs, headers):
82
76
        values = super(AnnotateUI, self).get_values(path, kwargs, headers)
83
 
        values['annotated'] = self.annotate_file(path, values)
84
 
 
 
77
        values['annotated'] = self.annotate_file(values)
 
78
        
85
79
        return values