/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to breezy/bisect.py

  • Committer: Jelmer Vernooij
  • Date: 2020-03-22 01:35:14 UTC
  • mfrom: (7490.7.6 work)
  • mto: This revision was merged to the branch mainline in revision 7499.
  • Revision ID: jelmer@jelmer.uk-20200322013514-7vw1ntwho04rcuj3
merge lp:brz/3.1.

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 
17
17
"""bisect command implementations."""
18
18
 
19
 
from __future__ import absolute_import
20
 
 
21
19
import sys
22
20
from .controldir import ControlDir
23
21
from . import revision as _mod_revision
24
22
from .commands import Command
25
23
from .errors import BzrCommandError
26
24
from .option import Option
27
 
from .sixish import (
28
 
    text_type,
29
 
    )
30
25
from .trace import note
31
26
 
32
27
BISECT_INFO_PATH = "bisect"
49
44
    def _save(self):
50
45
        """Save the current revision."""
51
46
        self._controldir.control_transport.put_bytes(
52
 
            self._filename, self._revid + "\n")
 
47
            self._filename, self._revid + b"\n")
53
48
 
54
49
    def get_current_revid(self):
55
50
        """Return the current revision id."""
57
52
 
58
53
    def get_current_revno(self):
59
54
        """Return the current revision number as a tuple."""
60
 
        revdict = self._branch.get_revision_id_to_revno_map()
61
 
        return revdict[self.get_current_revid()]
 
55
        return self._branch.revision_id_to_dotted_revno(self._revid)
62
56
 
63
57
    def get_parent_revids(self):
64
58
        """Return the IDs of the current revision's predecessors."""
126
120
        if not self._branch:
127
121
            self._branch = self._controldir.open_branch()
128
122
 
129
 
    def _find_range_and_middle(self, branch_last_rev = None):
 
123
    def _find_range_and_middle(self, branch_last_rev=None):
130
124
        """Find the current revision range, and the midpoint."""
131
125
        self._load_tree()
132
126
        self._middle_revid = None
139
133
        repo = self._branch.repository
140
134
        with repo.lock_read():
141
135
            graph = repo.get_graph()
142
 
            rev_sequence = graph.iter_lefthand_ancestry(last_revid,
143
 
                (_mod_revision.NULL_REVISION,))
 
136
            rev_sequence = graph.iter_lefthand_ancestry(
 
137
                last_revid, (_mod_revision.NULL_REVISION,))
144
138
            high_revid = None
145
139
            low_revid = None
146
140
            between_revs = []
173
167
        if spread < 2:
174
168
            middle_index = 0
175
169
        else:
176
 
            middle_index = (spread / 2) - 1
 
170
            middle_index = (spread // 2) - 1
177
171
 
178
172
        if len(between_revs) > 0:
179
173
            self._middle_revid = between_revs[middle_index]
207
201
            revlog = self._open_for_read()
208
202
            for line in revlog:
209
203
                (revid, status) = line.split()
210
 
                self._items.append((revid, status))
 
204
                self._items.append((revid, status.decode('ascii')))
211
205
 
212
206
    def save(self):
213
207
        """Save the bisection log."""
214
 
        contents = ''.join(
215
 
            ("%s %s\n" % (revid, status))
 
208
        contents = b''.join(
 
209
            (b"%s %s\n" % (revid, status.encode('ascii')))
216
210
            for (revid, status) in self._items)
217
211
        if self._filename:
218
212
            self._controldir.control_transport.put_bytes(
248
242
        self._find_range_and_middle()
249
243
        # If we've found the "final" revision, check for a
250
244
        # merge point.
251
 
        while ((self._middle_revid == self._high_revid
252
 
                or self._middle_revid == self._low_revid)
253
 
                and self.is_merge_point(self._middle_revid)):
 
245
        while ((self._middle_revid == self._high_revid or
 
246
                self._middle_revid == self._low_revid) and
 
247
                self.is_merge_point(self._middle_revid)):
254
248
            for parent in self.get_parent_revids(self._middle_revid):
255
249
                if parent == self._low_revid:
256
250
                    continue
315
309
 
316
310
    takes_args = ['subcommand', 'args*']
317
311
    takes_options = [Option('output', short_name='o',
318
 
                            help='Write log to this file.', type=text_type),
 
312
                            help='Write log to this file.', type=str),
319
313
                     'revision', 'directory']
320
314
 
321
315
    def _check(self, controldir):
341
335
        bisect_log.save()
342
336
        return False
343
337
 
344
 
    def run(self, subcommand, args_list, directory='.', revision=None, output=None):
 
338
    def run(self, subcommand, args_list, directory='.', revision=None,
 
339
            output=None):
345
340
        """Handle the bisect command."""
346
341
 
347
342
        log_fn = None
402
397
        self._set_state(controldir, revspec, "yes")
403
398
 
404
399
    def no(self, controldir, revspec):
405
 
        """Mark that a given revision does not have the state we're looking for."""
 
400
        """Mark a given revision as wrong."""
406
401
        self._set_state(controldir, revspec, "no")
407
402
 
408
403
    def move(self, controldir, revspec):