Nghe có vẻ cứt bò, tuy nhiên sự thật là việc không add một trong trống ở cuối file thực sự là một tội ác
No Newline at End of File
Bạn đã bao giờ nhìn thấy dòng chữ ở git
hay ở vim
Ờ thế tại sao git lại báo thế, nó đến từ một quyết định trong quá khứ của Unix
Một tệp nguồn không trống sẽ kết thúc bằng một ký tự dòng mới, không được đặt ngay trước ký tự dấu gạch chéo ngược (backslash).
Vì đây là mệnh đề, nên chúng ta sẽ kiểm tra việc vi phạm quy tắc
Vì vậy, nó chỉ ra rằng, theo POSIX, mọi tệp văn bản (bao gồm các tệp nguồn Ruby và JavaScript) phải kết thúc bằng một ký tự \n, hoặc mới newline (không phải là một dòng mới). Điều này đóng vai trò là eol, hoặc kết thúc của dòng nhân vật. Nó là một dòng Terminator.
Bây giờ thì gần như mọi chương trình text editor đều hỗ trợ việc tự động thêm 1 dòng trống vào cuối file, ví dụ:
- vim: mặc định rồi, nên là cứ để nó mặc định thôi
- VSCode: dùng setting Files: Insert Final Newline
- Sublime: dùng setting ensure_newline_at_eof_on_save
Tóm lại là anh em nên thêm 1 dòng vào cuối file code nếu chưa có thì hãy sửa như sau:
git ls-files -z | while IFS= read -rd '' f; do tail -c1 < "$f" | read -r _ || echo >> "$f"; done
ref: https://unix.stackexchange.com/questions/31947/how-to-add-a-newline-to-the-end-of-a-file