Merge lp:~jelmer/brz-git/extras-badfileenc into lp:brz-git

Proposed by Jelmer Vernooij
Status: Merged
Approved by: Jelmer Vernooij
Approved revision: 1838
Merge reported by: The Breezy Bot
Merged at revision: not available
Proposed branch: lp:~jelmer/brz-git/extras-badfileenc
Merge into: lp:brz-git
Diff against target: 36 lines (+12/-3)
1 file modified
workingtree.py (+12/-3)
To merge this branch: bzr merge lp:~jelmer/brz-git/extras-badfileenc
Reviewer Review Type Date Requested Status
Jelmer Vernooij Approve
Review via email: mp+341188@code.launchpad.net

Commit message

Fix BadFilenameEncoding raising during WorkingTree.extras.

Description of the change

Fix BadFilenameEncoding raising during WorkingTree.extras.

To post a comment you must log in.
Revision history for this message
Jelmer Vernooij (jelmer) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'workingtree.py'
2--- workingtree.py 2018-03-07 02:41:52 +0000
3+++ workingtree.py 2018-03-09 02:28:42 +0000
4@@ -614,7 +614,7 @@
5 def _iter_files_recursive(self, from_dir=None, include_dirs=False):
6 if from_dir is None:
7 from_dir = ""
8- for (dirpath, dirnames, filenames) in os.walk(self.abspath(from_dir)):
9+ for (dirpath, dirnames, filenames) in os.walk(self.abspath(from_dir).encode(osutils._fs_enc)):
10 dir_relpath = dirpath[len(self.basedir):].strip("/")
11 if self.controldir.is_control_filename(dir_relpath):
12 continue
13@@ -624,12 +624,21 @@
14 continue
15 relpath = os.path.join(dir_relpath, name)
16 if include_dirs:
17- yield relpath
18+ try:
19+ yield relpath.decode(osutils._fs_enc)
20+ except UnicodeDecodeError as e:
21+ raise errors.BadFilenameEncoding(
22+ relpath, osutils._fs_enc)
23 if not self._has_dir(relpath):
24 dirnames.remove(name)
25 for name in filenames:
26 if not self.mapping.is_special_file(name):
27- yield os.path.join(dir_relpath, name)
28+ yp = os.path.join(dir_relpath, name)
29+ try:
30+ yield yp.decode(osutils._fs_enc)
31+ except UnicodeDecodeError:
32+ raise errors.BadFilenameEncoding(
33+ yp, osutils._fs_enc)
34
35 def extras(self):
36 """Yield all unversioned files in this WorkingTree.

Subscribers

People subscribed via source and target branches

to all changes: