~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/workingtree.py

Merge bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
68
68
    revisiontree,
69
69
    repository,
70
70
    textui,
 
71
    trace,
71
72
    transform,
 
73
    ui,
72
74
    urlutils,
73
75
    xml5,
74
76
    xml6,
524
526
        return self.abspath(self.id2path(file_id))
525
527
 
526
528
    @needs_read_lock
527
 
    def clone(self, to_bzrdir, revision_id=None, basis=None):
 
529
    def clone(self, to_bzrdir, revision_id=None):
528
530
        """Duplicate this working tree into to_bzr, including all state.
529
531
        
530
532
        Specifically modified files are kept as modified, but
536
538
            If not None, the cloned tree will have its last revision set to 
537
539
            revision, and and difference between the source trees last revision
538
540
            and this one merged in.
539
 
 
540
 
        basis
541
 
            If not None, a closer copy of a tree which may have some files in
542
 
            common, and which file content should be preferentially copied from.
543
541
        """
544
542
        # assumes the target bzr dir format is compatible.
545
543
        result = self._format.initialize(to_bzrdir)
1397
1395
        # prevent race conditions with the lock
1398
1396
        return iter(
1399
1397
            [subp for subp in self.extras() if not self.is_ignored(subp)])
1400
 
    
 
1398
 
1401
1399
    @needs_tree_write_lock
1402
1400
    def unversion(self, file_ids):
1403
1401
        """Remove the file ids in file_ids from the current versioned set.
2267
2265
        self.set_conflicts(un_resolved)
2268
2266
        return un_resolved, resolved
2269
2267
 
 
2268
    def _validate(self):
 
2269
        """Validate internal structures.
 
2270
 
 
2271
        This is meant mostly for the test suite. To give it a chance to detect
 
2272
        corruption after actions have occurred. The default implementation is a
 
2273
        just a no-op.
 
2274
 
 
2275
        :return: None. An exception should be raised if there is an error.
 
2276
        """
 
2277
        return
 
2278
 
2270
2279
 
2271
2280
class WorkingTree2(WorkingTree):
2272
2281
    """This is the Format 2 working tree.
2432
2441
 
2433
2442
    requires_rich_root = False
2434
2443
 
 
2444
    upgrade_recommended = False
 
2445
 
2435
2446
    @classmethod
2436
2447
    def find_format(klass, a_bzrdir):
2437
2448
        """Return the format for the working tree object in a_bzrdir."""
2486
2497
        del klass._formats[format.get_format_string()]
2487
2498
 
2488
2499
 
2489
 
 
2490
2500
class WorkingTreeFormat2(WorkingTreeFormat):
2491
2501
    """The second working tree format. 
2492
2502
 
2493
2503
    This format modified the hash cache from the format 1 hash cache.
2494
2504
    """
2495
2505
 
 
2506
    upgrade_recommended = True
 
2507
 
2496
2508
    def get_format_description(self):
2497
2509
        """See WorkingTreeFormat.get_format_description()."""
2498
2510
        return "Working tree format 2"
2561
2573
            raise NotImplementedError
2562
2574
        if not isinstance(a_bzrdir.transport, LocalTransport):
2563
2575
            raise errors.NotLocalUrl(a_bzrdir.transport.base)
2564
 
        return WorkingTree2(a_bzrdir.root_transport.local_abspath('.'),
 
2576
        wt = WorkingTree2(a_bzrdir.root_transport.local_abspath('.'),
2565
2577
                           _internal=True,
2566
2578
                           _format=self,
2567
2579
                           _bzrdir=a_bzrdir)
2568
 
 
 
2580
        return wt
2569
2581
 
2570
2582
class WorkingTreeFormat3(WorkingTreeFormat):
2571
2583
    """The second working tree format updated to record a format marker.
2578
2590
        - is new in bzr 0.8
2579
2591
        - uses a LockDir to guard access for writes.
2580
2592
    """
 
2593
    
 
2594
    upgrade_recommended = True
2581
2595
 
2582
2596
    def get_format_string(self):
2583
2597
        """See WorkingTreeFormat.get_format_string()."""
2668
2682
            raise NotImplementedError
2669
2683
        if not isinstance(a_bzrdir.transport, LocalTransport):
2670
2684
            raise errors.NotLocalUrl(a_bzrdir.transport.base)
2671
 
        return self._open(a_bzrdir, self._open_control_files(a_bzrdir))
 
2685
        wt = self._open(a_bzrdir, self._open_control_files(a_bzrdir))
 
2686
        return wt
2672
2687
 
2673
2688
    def _open(self, a_bzrdir, control_files):
2674
2689
        """Open the tree itself.