آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مدیریت کاربران مشترک
بروز خطا
امتیازات دریافتی

رفع مشکل عدم سازگاری Line Separator

کاشی زاده  5 سال پیش  5 سال پیش
0
1
2

اگر شما هم مثل من پروژه را در ویندوز توسعه می دهید و از سرور لینوکس استفاده می کنید، قطعا با مشکل عدم تطابق 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