`shutil.copytree` fails on bcachefs case insensitive directories
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- Python
- Star
- 77.2k
- Fork
- 35.9k
- Chỉ số merge pull request
- Chỉ số pull request đang chờ
Mô tả
Bug report
Bug description:
On bcachefs create case insensitive directory with some file inside:
mkdir ncs
chattr +F ncs
touch ncs/something.txt
then do this
import shutil
shutil.copytree("ncs/", "target/")
fails with
Traceback (most recent call last):
File "<string>", line 1, in <module>
import shutil; shutil.copytree("ncs/", "target/")
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.14/shutil.py", line 654, in copytree
return _copytree(entries=entries, src=src, dst=dst, symlinks=symlinks,
ignore=ignore, copy_function=copy_function,
ignore_dangling_symlinks=ignore_dangling_symlinks,
dirs_exist_ok=dirs_exist_ok)
File "/usr/lib/python3.14/shutil.py", line 608, in _copytree
raise Error(errors)
shutil.Error: [('ncs/', 'target/', "[Errno 39] Directory not empty: 'target/'")]
This is because of
listxattr("ncs/", "bcachefs.casefold\0bcachefs_effec"..., 256) = 46
getxattr("ncs/", "bcachefs.casefold", "1", 128) = 1
setxattr("target/", "bcachefs.casefold", "1", 1, 0) = -1 ENOTEMPTY (Directory not empty)
getcwd("/home/user/_x", 1024) = 14
happening after contents were copied and case insensitivity can't be enabled afterwards.
Note: On ext4 copytree results in a directory without casefolding flag.
CPython versions tested on:
3.14
Operating systems tested on:
Linux
Linked PRs
- gh-145869
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Trước tiên, hãy xem xét PR được liên kết gh-145869, sau đó bắt đầu từ shutil.copytree và _copytree trong shutil.py. Tái hiện lỗi bcachefs case-insensitive bằng các lệnh và ví dụ Python trong báo cáo; công việc được hoàn tất khi thao tác sao chép được báo cáo xử lý đúng thuộc tính hệ thống tệp mà không phát sinh lỗi Directory not empty được hiển thị.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- python
- Lĩnh vực
- operating-systems
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 25/100