~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/transform.py

Ensured we can move/rename dangling inventory entries

Show diffs side-by-side

added added

removed removed

Lines of Context:
437
437
                try:
438
438
                    os.unlink(full_path)
439
439
                except OSError, e:
 
440
                # We may be renaming a dangling inventory id
440
441
                    if e.errno != errno.EISDIR and e.errno != errno.EACCES:
441
442
                        raise
442
443
                    os.rmdir(full_path)
443
444
            elif trans_id in self._new_name or trans_id in self._new_parent:
444
 
                os.rename(full_path, os.path.join(limbo, trans_id))
 
445
                try:
 
446
                    os.rename(full_path, os.path.join(limbo, trans_id))
 
447
                except OSError, e:
 
448
                    if e.errno != errno.ENOENT:
 
449
                        raise
445
450
            if trans_id in self._removed_id:
446
451
                del inv[self.get_tree_file_id(trans_id)]
447
452
            elif trans_id in self._new_name or trans_id in self._new_parent:
475
480
                os.symlink(target, self._tree.abspath(path))
476
481
            elif kind is None and (trans_id in self._new_name or
477
482
                                   trans_id in self._new_parent):
478
 
                os.rename(os.path.join(limbo, trans_id), 
479
 
                                       self._tree.abspath(path))
480
 
 
 
483
                full_path = self._tree.abspath(path)
 
484
                try:
 
485
                    os.rename(os.path.join(limbo, trans_id), full_path)
 
486
                except OSError, e:
 
487
                    # We may be renaming a dangling inventory id
 
488
                    if e.errno != errno.ENOENT:
 
489
                        raise
481
490
 
482
491
            if trans_id in self._new_id:
483
492
                if kind is None: