/breezy/unstable

To get this branch, use:
bzr branch https://code.breezy-vcs.org/breezy/unstable

« back to all changes in this revision

Viewing changes to breezy/plugins/grep/grep.py

  • Committer: Jelmer Vernooij
  • Date: 2017-05-24 01:39:33 UTC
  • mfrom: (3815.3776.6)
  • Revision ID: jelmer@jelmer.uk-20170524013933-ir4y4tqtrsiz2ka2
New upstream snapshot.

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 
17
17
from __future__ import absolute_import
18
18
 
 
19
import re
19
20
import sys
20
21
 
21
 
from bzrlib.lazy_import import lazy_import
 
22
from ...lazy_import import lazy_import
22
23
lazy_import(globals(), """
23
24
from fnmatch import fnmatch
24
 
import re
25
 
from cStringIO import StringIO
26
 
 
27
 
from bzrlib._termcolor import color_string, re_color_string, FG
28
 
 
29
 
from bzrlib.revisionspec import (
 
25
 
 
26
from breezy._termcolor import color_string, re_color_string, FG
 
27
 
 
28
from breezy.revisionspec import (
30
29
    RevisionSpec,
31
30
    RevisionSpec_revid,
32
31
    RevisionSpec_revno,
33
32
    )
34
 
from bzrlib import (
 
33
from breezy import (
35
34
    bzrdir,
36
35
    diff,
37
36
    errors,
38
37
    lazy_regex,
 
38
    revision as _mod_revision,
 
39
    )
 
40
""")
 
41
from breezy import (
39
42
    osutils,
40
 
    revision as _mod_revision,
41
43
    trace,
42
44
    )
43
 
""")
 
45
from breezy.sixish import (
 
46
    BytesIO,
 
47
    )
44
48
 
45
49
_user_encoding = osutils.get_user_encoding()
46
50
 
57
61
 
58
62
 
59
63
# NOTE: _linear_view_revisions is basided on
60
 
# bzrlib.log._linear_view_revisions.
 
64
# breezy.log._linear_view_revisions.
61
65
# This should probably be a common public API
62
66
def _linear_view_revisions(branch, start_rev_id, end_rev_id):
63
67
    # requires that start is older than end
74
78
 
75
79
 
76
80
# NOTE: _graph_view_revisions is copied from
77
 
# bzrlib.log._graph_view_revisions.
 
81
# breezy.log._graph_view_revisions.
78
82
# This should probably be a common public API
79
83
def _graph_view_revisions(branch, start_rev_id, end_rev_id,
80
84
                          rebase_initial_depths=True):
122
126
        # use python's re.compile as we need to catch re.error in case of bad pattern
123
127
        lazy_regex.reset_compile()
124
128
        patternc = re.compile(pattern, flags)
125
 
    except re.error, e:
 
129
    except re.error as e:
126
130
        raise errors.BzrError("Invalid pattern: '%s'" % pattern)
127
131
    return patternc
128
132
 
277
281
            else:
278
282
                ancestor_id = new_rev.parent_ids[0]
279
283
            old_tree = repo.revision_tree(ancestor_id)
280
 
            s = StringIO()
 
284
            s = BytesIO()
281
285
            diff.show_diff_trees(old_tree, new_tree, s,
282
286
                old_label='', new_label='')
283
287
            display_revno = True
674
678
            writeline()
675
679
    elif opts.fixed_string:
676
680
        # Fast path for no match, search through the entire file at once rather
677
 
        # than a line at a time. However, we don't want this without Python 2.5
678
 
        # as the quick string search algorithm wasn't implemented till then:
679
 
        # <http://effbot.org/zone/stringlib.htm>
680
 
        if sys.version_info > (2, 5):
681
 
            i = file_text.find(pattern)
682
 
            if i == -1:
683
 
                return
684
 
            b = file_text.rfind("\n", 0, i) + 1
685
 
            if opts.line_number:
686
 
                start = file_text.count("\n", 0, b) + 1
687
 
            file_text = file_text[b:]
688
 
        else:
689
 
            start = 1
 
681
        # than a line at a time. <http://effbot.org/zone/stringlib.htm>
 
682
        i = file_text.find(pattern)
 
683
        if i == -1:
 
684
            return
 
685
        b = file_text.rfind("\n", 0, i) + 1
 
686
        if opts.line_number:
 
687
            start = file_text.count("\n", 0, b) + 1
 
688
        file_text = file_text[b:]
690
689
        if opts.line_number:
691
690
            for index, line in enumerate(file_text.splitlines()):
692
691
                if pattern in line: