~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/branch.py

  • Committer: Martin Pool
  • Date: 2005-06-24 11:09:36 UTC
  • Revision ID: mbp@sourcefrog.net-20050624110935-87a3b29aed05ac19
- Branch.revert copies files to backups before reverting them

Show diffs side-by-side

added added

removed removed

Lines of Context:
948
948
            self.unlock()
949
949
 
950
950
 
951
 
    def revert(self, filenames, old_tree=None):
 
951
    def revert(self, filenames, old_tree=None, backups=True):
952
952
        """Restore selected files to the versions from a previous tree.
 
953
 
 
954
        backups
 
955
            If true (default) backups are made of files before
 
956
            they're renamed.
953
957
        """
954
958
        from bzrlib.errors import NotVersionedError, BzrError
955
959
        from bzrlib.atomicfile import AtomicFile
 
960
        from bzrlib.osutils import backup_file
956
961
        
957
962
        inv = self.read_working_inventory()
958
963
        if old_tree is None:
964
969
            file_id = inv.path2id(fn)
965
970
            if not file_id:
966
971
                raise NotVersionedError("not a versioned file", fn)
 
972
            if not old_inv.has_id(file_id):
 
973
                raise BzrError("file not present in old tree", fn, file_id)
967
974
            nids.append((fn, file_id))
968
975
            
969
976
        # TODO: Rename back if it was previously at a different location
975
982
 
976
983
        # TODO: If the file previously didn't exist, delete it?
977
984
        for fn, file_id in nids:
978
 
            if not old_inv.has_id(file_id):
979
 
                raise BzrError("file not present in old tree", fn, file_id)
 
985
            backup_file(fn)
 
986
            
980
987
            f = AtomicFile(fn, 'wb')
981
988
            try:
982
989
                f.write(old_tree.get_file(file_id).read())