Comment 1 for bug 686611

Revision history for this message
Martin Packman (gz) wrote :

Fun bug. This is a regression from the fix for bug 192859 specifically in r4634.159.8 on trunk. The problem only manifests with relative paths, and as noted only with more than once filename.

The basic issue is in trying to turn a (unicode) relative path into an absolute path with a (bytestring) cwd.

In cmd_add.run:
    tree, file_list = tree_files_for_add(file_list)
In tree_files_for_add:
    file_list = file_list[:]
    file_list[0] = tree.abspath(relpath)

Which explains why passing one file at a time works, the first file given is preabsoluted.

In MutableTree.smart_add:
    # expand any symlinks in the directory part, while leaving the
    # filename alone
    file_list = map(osutils.normalizepath, file_list)

There's the boom on Python 2.5 or earlier, that goes down to os.path.abspath which dies on a unicode argument and non-ascii cwd:
<http://bugs.python.org/issue3426>