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

* ``WorkingTree.rename_one`` will now raise an error if normalisation of the
  new path causes bzr to be unable to access the file. (Robert Collins)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1371
1371
        This does not move the working file.
1372
1372
        """
1373
1373
        file_id = osutils.safe_file_id(file_id)
 
1374
        new_name = ensure_normalized_name(new_name)
1374
1375
        if not is_valid_name(new_name):
1375
1376
            raise BzrError("not an acceptable filename: %r" % new_name)
1376
1377
 
1418
1419
        file_id = generate_ids.gen_file_id(name)
1419
1420
    else:
1420
1421
        file_id = osutils.safe_file_id(file_id)
1421
 
 
 
1422
    name = ensure_normalized_name(name)
 
1423
    try:
 
1424
        factory = entry_factory[kind]
 
1425
    except KeyError:
 
1426
        raise BzrError("unknown kind %r" % kind)
 
1427
    return factory(file_id, name, parent_id)
 
1428
 
 
1429
 
 
1430
def ensure_normalized_name(name):
 
1431
    """Normalize name.
 
1432
 
 
1433
    :raises InvalidNormalization: When name is not normalized, and cannot be
 
1434
        accessed on this platform by the normalized path.
 
1435
    :return: The NFC/NFKC normalised version of name.
 
1436
    """
1422
1437
    #------- This has been copied to bzrlib.dirstate.DirState.add, please
1423
1438
    # keep them synchronised.
1424
1439
    # we dont import normalized_filename directly because we want to be
1426
1441
    norm_name, can_access = osutils.normalized_filename(name)
1427
1442
    if norm_name != name:
1428
1443
        if can_access:
1429
 
            name = norm_name
 
1444
            return norm_name
1430
1445
        else:
1431
1446
            # TODO: jam 20060701 This would probably be more useful
1432
1447
            #       if the error was raised with the full path
1433
1448
            raise errors.InvalidNormalization(name)
1434
 
 
1435
 
    try:
1436
 
        factory = entry_factory[kind]
1437
 
    except KeyError:
1438
 
        raise BzrError("unknown kind %r" % kind)
1439
 
    return factory(file_id, name, parent_id)
 
1449
    return name
1440
1450
 
1441
1451
 
1442
1452
_NAME_RE = None