/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 bzrlib/builtins.py

  • Committer: Vincent Ladeuil
  • Date: 2009-06-30 17:00:26 UTC
  • mfrom: (4409.1.21 revno_revinfo)
  • mto: This revision was merged to the branch mainline in revision 4496.
  • Revision ID: v.ladeuil+lp@free.fr-20090630170026-5kfdfs33sqd1j9ds
Add --tree to revno and revision-info

Show diffs side-by-side

added added

removed removed

Lines of Context:
474
474
 
475
475
    _see_also = ['info']
476
476
    takes_args = ['location?']
 
477
    takes_options = [
 
478
        Option('tree', help='Show revno of working tree'),
 
479
        ]
477
480
 
478
481
    @display_command
479
 
    def run(self, location=u'.'):
480
 
        self.outf.write(str(Branch.open_containing(location)[0].revno()))
481
 
        self.outf.write('\n')
 
482
    def run(self, tree=False, location=u'.'):
 
483
        if tree:
 
484
            try:
 
485
                wt = WorkingTree.open_containing(location)[0]
 
486
                wt.lock_read()
 
487
            except (errors.NoWorkingTree, errors.NotLocalUrl):
 
488
                raise errors.NoWorkingTree(location)
 
489
            try:
 
490
                revid = wt.last_revision()
 
491
                try:
 
492
                    revno_t = wt.branch.revision_id_to_dotted_revno(revid)
 
493
                except errors.NoSuchRevision:
 
494
                    revno_t = ('???',)
 
495
                revno = ".".join(str(n) for n in revno_t)
 
496
            finally:
 
497
                wt.unlock()
 
498
        else:
 
499
            b = Branch.open_containing(location)[0]
 
500
            b.lock_read()
 
501
            try:
 
502
                revno = b.revno()
 
503
            finally:
 
504
                b.unlock()
 
505
 
 
506
        self.outf.write(str(revno) + '\n')
482
507
 
483
508
 
484
509
class cmd_revision_info(Command):
494
519
            short_name='d',
495
520
            type=unicode,
496
521
            ),
 
522
        Option('tree', help='Show revno of working tree'),
497
523
        ]
498
524
 
499
525
    @display_command
500
 
    def run(self, revision=None, directory=u'.', revision_info_list=[]):
501
 
 
502
 
        revs = []
503
 
        if revision is not None:
504
 
            revs.extend(revision)
505
 
        if revision_info_list is not None:
506
 
            for rev in revision_info_list:
507
 
                revs.append(RevisionSpec.from_string(rev))
508
 
 
509
 
        b = Branch.open_containing(directory)[0]
510
 
 
511
 
        if len(revs) == 0:
512
 
            revs.append(RevisionSpec.from_string('-1'))
513
 
 
514
 
        for rev in revs:
515
 
            revision_id = rev.as_revision_id(b)
516
 
            try:
517
 
                revno = '%4d' % (b.revision_id_to_revno(revision_id))
518
 
            except errors.NoSuchRevision:
519
 
                dotted_map = b.get_revision_id_to_revno_map()
520
 
                revno = '.'.join(str(i) for i in dotted_map[revision_id])
521
 
            print '%s %s' % (revno, revision_id)
 
526
    def run(self, revision=None, directory=u'.', tree=False,
 
527
            revision_info_list=[]):
 
528
 
 
529
        try:
 
530
            wt = WorkingTree.open_containing(directory)[0]
 
531
            b = wt.branch
 
532
            wt.lock_read()
 
533
        except (errors.NoWorkingTree, errors.NotLocalUrl):
 
534
            wt = None
 
535
            b = Branch.open_containing(directory)[0]
 
536
            b.lock_read()
 
537
        try:
 
538
            revision_ids = []
 
539
            if revision is not None:
 
540
                revision_ids.extend(rev.as_revision_id(b) for rev in revision)
 
541
            if revision_info_list is not None:
 
542
                for rev_str in revision_info_list:
 
543
                    rev_spec = RevisionSpec.from_string(rev_str)
 
544
                    revision_ids.append(rev_spec.as_revision_id(b))
 
545
            # No arguments supplied, default to the last revision
 
546
            if len(revision_ids) == 0:
 
547
                if tree:
 
548
                    if wt is None:
 
549
                        raise errors.NoWorkingTree(directory)
 
550
                    revision_ids.append(wt.last_revision())
 
551
                else:
 
552
                    revision_ids.append(b.last_revision())
 
553
 
 
554
            revinfos = []
 
555
            maxlen = 0
 
556
            for revision_id in revision_ids:
 
557
                try:
 
558
                    dotted_revno = b.revision_id_to_dotted_revno(revision_id)
 
559
                    revno = '.'.join(str(i) for i in dotted_revno)
 
560
                except errors.NoSuchRevision:
 
561
                    revno = '???'
 
562
                maxlen = max(maxlen, len(revno))
 
563
                revinfos.append([revno, revision_id])
 
564
        finally:
 
565
            if wt is None:
 
566
                b.unlock()
 
567
            else:
 
568
                wt.unlock()
 
569
 
 
570
        for ri in revinfos:
 
571
            self.outf.write('%*s %s\n' % (maxlen, ri[0], ri[1]))
522
572
 
523
573
 
524
574
class cmd_add(Command):