2016-10-28 13 views
9

Khi một tệp được mở trong trình chỉnh sửa (nói Siêu cấp hoặc Atom) và tệp được chỉnh sửa bên ngoài trình chỉnh sửa, trình chỉnh sửa luôn từ chối làm mới tệp mà nó hiển thị. Tình trạng này hiếm khi xảy ra, vì hầu hết mọi người sẽ chỉ sử dụng một công cụ duy nhất để chỉnh sửa tệp trong một khung thời gian cụ thể. Đây rõ ràng không phải là vấn đề khi tệp chỉ đọc. Ví dụ, khi đọc nhật ký lỗi hệ thống, tệp sẽ được cập nhật khi hệ thống đang chạy và có thể có nhật ký lỗi mới, nhưng tệp nhật ký sẽ không được chỉnh sửa để nó không gây xung đột.Có cách nào để ngăn chặn tình cờ ghi đè sau khi git kéo do trình chỉnh sửa không tự động cập nhật không?

Tuy nhiên, nó gây ra sự cố khi tệp được cập nhật bởi git pull.

Khi một người kéo các bản cập nhật mới nhất cho repo, anh ấy có thể mở một tệp trong trình chỉnh sửa mà một số thay đổi đã được thực hiện trong bản cập nhật. Nếu trình chỉnh sửa không làm mới tệp, tệp được lưu với nội dung cũ và mọi thay đổi mới sẽ bị mất.

Đôi khi, nó chỉ gây phiền toái để đảo ngược hunk bằng cách sử dụng sourcetree, nhưng khi có một số tệp được cập nhật, ghi đè đó có thể được đẩy tới máy chủ git không được chú ý - cho đến khi xảy ra lỗi. Hiện tại chúng tôi đang sử dụng lệnh git log --follow -p -- file để định vị và hoàn nguyên lỗi, nhưng không thể nếu ghi đè không được chú ý trong thời gian , buộc chúng tôi sao chép các dòng theo cách thủ công. Có cách nào để ngăn chặn loại ghi đè này ngay từ đầu không?

+0

Giải pháp tôi sẽ sử dụng sẽ là di chuyển khỏi các trình chỉnh sửa hoạt động theo cách này. IDE hiện đại nhất (Eclipse, IntelliJ, NetBeans, v.v.) không có vấn đề này. –

+0

Bất kỳ tùy chọn nào cho PHP? (và tốt hơn để được tự do, do đó PHPStorm không phải là một lựa chọn) – cytsunny

+0

Tôi nghĩ rằng tôi đã nhìn thấy điều này xảy ra ngay cả với IntelliJ một vài lần, nhưng nó không bao giờ là một vấn đề đủ lớn để lo lắng hơn. Tôi không biết những gì biên tập viên bạn có thể sử dụng cho PHP mà sẽ tránh điều này. Notepad ++ có vẻ rất cư xử tốt trong lĩnh vực này, tức là nó không ăn các cập nhật của bạn. –

Trả lời

4

Khi một thư mục được mở bởi trình chỉnh sửa (chủ yếu là Cao nguyên hoặc Atom trong nhóm của chúng tôi) và mã được chỉnh sửa bên ngoài trình chỉnh sửa, đôi khi nội dung trong trình chỉnh sửa được làm mới, nhưng đôi khi không.

Đây chính xác là những gì được thảo luận trong Atom issue 3594

Một Atom gói như file-watcher sẽ giúp giảm thiểu vấn đề này, bởi nhắc nhở để tải lại mỗi tập tin nếu một sự sửa đổi ngoài biên tập được phát hiện.

Bạn có cùng một sự cố reported in this thread cho SublimeText. Như đã đề cập trong that thread, sự cố thậm chí còn liên quan hơn đến Windows khi truy cập tệp qua chia sẻ mạng.
File Reloader có thể giúp nhưng không phát hiện các thay đổi bên ngoài.

Các SublimeText thread đề cập đến các thiết lập (2016)

{ "always_prompt_for_file_reload": true } 

Nhưng điều đó có thể không giúp đỡ khi có sự thay đổi cả trong trình soạn thảo và trong các tập tin đã lưu: Một editor like Visual Studio Code giải quyết này với:

Nếu có thay đổi ở cả hai bên (từ đĩa và qua trình chỉnh sửa) khi bạn cố gắng lưu tệp bằng VSCode, trình chỉnh sửa sẽ cảnh báo bạn về tình huống đó và so sánh tệp sẽ cho phép bạn quyết định việc cần làm.

Đó là lý do tại sao, với SublimeText (ngoài cài đặt "always_prompt_for_file_reload"), bạn có thể cần FileDiff plugin.
Nó cho phép diffing tập tin với Saved:

https://forum.sublimetext.com/uploads/default/original/3X/5/a/5a59f922e26fea423cc31ae5c1d744eca8205143.png

1

Có cách nào để ngăn chặn loại này ghi đè ở nơi đầu tiên?

Có, vì người chỉnh sửa không thực hiện việc phát hiện do gián đoạn từ hệ thống tệp, sau đó thực hiện bằng cách bỏ phiếu định kỳ hệ thống tệp cứ 3 giây một lần.

Khi lập trình trên Notepad ++, lỗi này rất hiển nhiên, đây là lý do tại sao plugin kiểm tra định kỳ kiểm tra hệ thống tệp để thay đổi tệp là thực sự cần thiết.

Đối Sublime TextNotepad++, các plugin là:

  1. https://packagecontrol.io/packages/Auto%20Refresh
  2. https://superuser.com/a/592913/458103 (màn Document => bắt đầu theo dõi)

Tôi sử dụng chúng trong một thời gian dài, do để lập trình với cùng một tệp trên nhiều trình soạn thảo văn bản/IDE. Sau đó, khi xen kẽ giữa các biên tập viên, tôi hầu hết thời gian mất công việc của tôi do họ không tải lại các tập tin từ hệ thống tập tin. Tuy nhiên sau khi cài đặt các plugin được đề cập, tôi không bao giờ phải đối mặt với vấn đề này một lần nữa hoặc nhận thấy vấn đề hiệu suất do tải lại định kỳ.

Các vấn đề liên quan