~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/revisionspec.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2006-05-19 08:15:16 UTC
  • mfrom: (1714.1.3 integration)
  • Revision ID: pqm@pqm.ubuntu.com-20060519081516-cd19bd125a53a4d2
Merge low hanging fruit optimisation of 'bzr add' (Robert Collins, Martin Pool).

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
 
18
18
import datetime
19
19
import re
20
 
import bisect
21
20
from bzrlib.errors import BzrError, NoSuchRevision, NoCommits
22
21
 
23
22
_marker = []
249
248
SPEC_TYPES.append(RevisionSpec_tag)
250
249
 
251
250
 
252
 
class RevisionSpec_revs:
253
 
    def __init__(self, revs, branch):
254
 
        self.revs = revs
255
 
        self.branch = branch
256
 
    def __getitem__(self, index):
257
 
        r = self.branch.repository.get_revision(self.revs[index])
258
 
        # TODO: Handle timezone.
259
 
        return datetime.datetime.fromtimestamp(r.timestamp)
260
 
    def __len__(self):
261
 
        return len(self.revs)
262
 
 
263
 
 
264
251
class RevisionSpec_date(RevisionSpec):
265
252
    prefix = 'date:'
266
253
    _date_re = re.compile(
308
295
 
309
296
            dt = datetime.datetime(year=year, month=month, day=day,
310
297
                    hour=hour, minute=minute, second=second)
311
 
        branch.lock_read()
312
 
        try:
313
 
            rev = bisect.bisect(RevisionSpec_revs(revs, branch), dt)
314
 
        finally:
315
 
            branch.unlock()
316
 
        if rev == len(revs):
317
 
            return RevisionInfo(branch, None)
318
 
        else:
319
 
            return RevisionInfo(branch, rev + 1)
 
298
        first = dt
 
299
        for i in range(len(revs)):
 
300
            r = branch.repository.get_revision(revs[i])
 
301
            # TODO: Handle timezone.
 
302
            dt = datetime.datetime.fromtimestamp(r.timestamp)
 
303
            if first <= dt:
 
304
                return RevisionInfo(branch, i+1)
 
305
        return RevisionInfo(branch, None)
320
306
 
321
307
SPEC_TYPES.append(RevisionSpec_date)
322
308