رفع مشکل عدم سازگاری Line Separator
اگر شما هم مثل من پروژه را در ویندوز توسعه می دهید و از سرور لینوکس استفاده می کنید، قطعا با مشکل عدم تطابق End of Line یا همون LF و CRLF برخورد کردید. برای رفع این مشکل این اسنیپ را مطالعه کنید.
اگر پروژه خود را بر روی سیستم عامل ویندوز توسعه می دهید و از طرفی قرار است پروژه شما بر روی سروری با سیستم عامل لینوکس کار کند، قطعا در زمان کار با Git و یا استفاده از نرم افزار های Compare با مشکل عدم تطابق فایل ها رو به رو شده اید. این درحالی است که فایل های شما دارای محتوای یکسان هستند اما ابزار چیز دیگری را می گوید.
علت بروز این مشکل تفاوت End of Line (EOL) در سیستم عامل های مختلف است. با توجه به مطلبی که در Wikipedia آمده در سیستم عامل های مختلف از EOL های مختلفی استفاده می شود.
LF: Multics, Unix and Unix-like systems (GNU/Linux, AIX, Xenix, Mac OS X, FreeBSD, etc.), BeOS, Amiga, RISC OS
CR+LF: DEC RT-11 and most other early non-Unix, non-IBM OSes, CP/M, MP/M, DOS, OS/2, Microsoft Windows, Symbian OS
CR: Commodore machines, Apple II family, Mac OS up to version 9 and OS-9
نکته : من از محیط های توسعه ارائه شده توسط JetBrains استفاده می کنم.
برای رفع این مشکل مراحل زیر را پیش بروید :
1- ابتدا وارد محیط توسعه شوید.
2- پوشه اصلی پروژه را انتخاب کنید.
3- از منو File
گزینه Line Separators
را پیدا کرده و در منوی باز شده گزینه LF - Unix and OS X (\n)
را انتخاب کنید.
با این کار تمام EOL فایل های پروژه شما که از CRLF مرسوم در ویندوز استفاده می کردند به LF که در سیستم عامل لینوکس استفاده می شود تغییر می کند.
4- وارد تنظیمات محیط توسعه شوید (CTRL + ALT + S)
و کلید واژه Line Separator را در نوار جستجو وارد کنید.
5- از بخش Code Style
مقدار Line Separator
را Unix and OS X (\n)
انتخاب کنید.
6- تنظیمات را ذخیره کنید.
از این پس تمام فایل های شما با EOL از نوع LF ذخیره می شود و دیگر تفاوتی با فایل های ذخیره شده در سرور وجود نخواهد داشت.
اگر از Git استفاده می کنید :
1- Git Bash
را باز کنید.
2- دستور زیر را وارد کنید تا همیشه فایل هایی که EOL از نوع CRLF دارند به صورت خود کار در زمان Commit
، به LF تبدیل شوند.
git config --global core.autocrlf input
or
git config core.autocrlf input