/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/transform.py

  • Committer: Aaron Bentley
  • Date: 2007-08-20 21:10:31 UTC
  • mto: This revision was merged to the branch mainline in revision 2765.
  • Revision ID: abentley@panoramicfeedback.com-20070820211031-rhqjt9mxt1dbzwrn
Use FileMover to perform renames in TT

Show diffs side-by-side

added added

removed removed

Lines of Context:
808
808
        inventory_delta = []
809
809
        child_pb = bzrlib.ui.ui_factory.nested_progress_bar()
810
810
        try:
811
 
            child_pb.update('Apply phase', 0, 2)
812
 
            self._apply_removals(inv, inventory_delta)
813
 
            child_pb.update('Apply phase', 1, 2)
814
 
            modified_paths = self._apply_insertions(inv, inventory_delta)
 
811
            mover = _FileMover()
 
812
            try:
 
813
                child_pb.update('Apply phase', 0, 2)
 
814
                self._apply_removals(inv, inventory_delta, mover)
 
815
                child_pb.update('Apply phase', 1, 2)
 
816
                modified_paths = self._apply_insertions(inv, inventory_delta,
 
817
                                                        mover)
 
818
            except:
 
819
                mover.rollback()
 
820
                raise
815
821
        finally:
816
822
            child_pb.finished()
817
823
        self._tree.apply_inventory_delta(inventory_delta)
852
858
        self._limbo_files[trans_id] = limbo_name
853
859
        return limbo_name
854
860
 
855
 
    def _apply_removals(self, inv, inventory_delta):
 
861
    def _apply_removals(self, inv, inventory_delta, mover):
856
862
        """Perform tree operations that remove directory/inventory names.
857
863
        
858
864
        That is, delete files that are to be deleted, and put any files that
872
878
                elif trans_id in self._new_name or trans_id in \
873
879
                    self._new_parent:
874
880
                    try:
875
 
                        os.rename(full_path, self._limbo_name(trans_id))
 
881
                        mover.rename(full_path, self._limbo_name(trans_id))
876
882
                    except OSError, e:
877
883
                        if e.errno != errno.ENOENT:
878
884
                            raise
888
894
        finally:
889
895
            child_pb.finished()
890
896
 
891
 
    def _apply_insertions(self, inv, inventory_delta):
 
897
    def _apply_insertions(self, inv, inventory_delta, mover):
892
898
        """Perform tree operations that insert directory/inventory names.
893
899
        
894
900
        That is, create any files that need to be created, and restore from
911
917
                    full_path = self._tree.abspath(path)
912
918
                    if trans_id in self._needs_rename:
913
919
                        try:
914
 
                            os.rename(self._limbo_name(trans_id), full_path)
 
920
                            mover.rename(self._limbo_name(trans_id), full_path)
915
921
                        except OSError, e:
916
922
                            # We may be renaming a dangling inventory id
917
923
                            if e.errno != errno.ENOENT: