Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

merge_tree(symlinks=True) cannot overwrite an existing destination symlink

Đang mở Phù hợp với người mới
#263 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
76/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
python
Lĩnh vực
operating-systems

Hướng nghiên cứu

Bắt đầu từ phần triển khai bằng Python của Path.merge_tree và tái hiện ví dụ được cung cấp với symlinks=True. Theo dõi cách xử lý đích của symlink, sau đó xác minh rằng merge thứ hai thành công và các đích, tệp cũng như thư mục đã thay đổi tại đích được thay thế như mô tả.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

When merge_tree is used to re-sync a directory tree that contains symbolic links (for example a deploy or backup copy run more than once), the second call fails:

FileExistsError: [Errno 17] File exists: .../file.txt -> .../link.txt

Regular files are overwritten via copy2, and the docstring says merge_tree copies "overwriting existing contents in dst". Symlinks take a different path that calls os.symlink without replacing dest, so a repeated merge cannot complete.

from path import Path

src, dst = Path('A'), Path('B')
src.mkdir(); dst.mkdir()
(src / 'file.txt').write_text('hello')
(src / 'file.txt').symlink(src / 'link.txt')
src.merge_tree(dst, True)
src.merge_tree(dst, True)  # FileExistsError

Expected: the second merge succeeds and the destination symlink is replaced (including when the link target has changed, or when dest is a file/directory with the same name).

Ngôn ngữ chính
Python
Star
1.1k
Fork
155
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Chuẩn bị môi trường

Chúng tôi chưa kiểm tra các tệp thiết lập môi trường của dự án này. Hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. 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.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của jaraco/path

Tất cả issue của jaraco/path

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.