~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/branch.py

  • Committer: Martin Pool
  • Date: 2005-05-17 06:56:16 UTC
  • Revision ID: mbp@sourcefrog.net-20050517065616-6f23381d6184a8aa
- add space for un-merged patches

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
17
 
 
18
from sets import Set
 
19
 
18
20
import sys, os, os.path, random, time, sha, sets, types, re, shutil, tempfile
19
21
import traceback, socket, fnmatch, difflib, time
20
22
from binascii import hexlify
80
82
######################################################################
81
83
# branch objects
82
84
 
83
 
class Branch(object):
 
85
class Branch:
84
86
    """Branch holding a history of revisions.
85
87
 
86
88
    base
87
89
        Base directory of the branch.
88
90
    """
89
91
    _lockmode = None
90
 
    base = None
91
92
    
92
93
    def __init__(self, base, init=False, find_root=True, lock_mode='w'):
93
94
        """Create new branch object at a particular location.
527
528
                yield i, rh[i-1]
528
529
                i -= 1
529
530
        else:
530
 
            raise ValueError('invalid history direction', direction)
 
531
            raise BzrError('invalid history direction %r' % direction)
531
532
 
532
533
 
533
534
    def revno(self):
572
573
 
573
574
        `revision_id` may be None for the null revision, in which case
574
575
        an `EmptyTree` is returned."""
575
 
        # TODO: refactor this to use an existing revision object
576
 
        # so we don't need to read it in twice.
577
576
        self._need_readlock()
578
577
        if revision_id == None:
579
578
            return EmptyTree()
678
677
        if to_dir_ie.kind not in ('directory', 'root_directory'):
679
678
            bailout("destination %r is not a directory" % to_abs)
680
679
 
681
 
        to_idpath = inv.get_idpath(to_dir_id)
 
680
        to_idpath = Set(inv.get_idpath(to_dir_id))
682
681
 
683
682
        for f in from_paths:
684
683
            if not tree.has_filename(f):
784
783
    This should probably generate proper UUIDs, but for the moment we
785
784
    cope with just randomness because running uuidgen every time is
786
785
    slow."""
787
 
    import re
788
 
 
789
 
    # get last component
790
786
    idx = name.rfind('/')
791
787
    if idx != -1:
792
788
        name = name[idx+1 : ]
794
790
    if idx != -1:
795
791
        name = name[idx+1 : ]
796
792
 
797
 
    # make it not a hidden file
798
793
    name = name.lstrip('.')
799
794
 
800
 
    # remove any wierd characters; we don't escape them but rather
801
 
    # just pull them out
802
 
    name = re.sub(r'[^\w.]', '', name)
803
 
 
804
795
    s = hexlify(rand_bytes(8))
805
796
    return '-'.join((name, compact_date(time.time()), s))