Я прочитав багато різних питань та відповідей щодо переповнення стека, а також документацію на git про те, як працює налаштування core.autocrlf .
Це моє розуміння з того, що я прочитав:
Клієнти Unix та Mac OSX (до OSX використовує CR) використовують клієнтські закінчення LF.
Клієнти Windows використовують закінчення рядків CRLF.
Коли для клієнта core.autocrlf встановлено значення "true", репозиторій git завжди зберігає файли у форматі закінчення рядка LF, а закінчення рядків у файлах клієнта перетворюються вперед і назад під час перевірки / фіксації для клієнтів (тобто Windows), які використовують не -LF закінчення рядків, незалежно від формату файлів закінчень рядків у клієнта (це не погоджується з визначенням Тіма Клема - див. Оновлення нижче).
Ось матриця, яка намагається документувати те ж саме для 'input' та 'false' налаштувань core.autocrlf зі знаками запитання, де я не впевнений у поведінці, що закінчує конверсійну поведінку.
Мої запитання:
- Якими мають бути знаки запитання?
- Чи правильна ця матриця для "знаків без запитання"?
Я оновлю знаки запитань з відповідей, оскільки, як видається, формується консенсус.
значення core.autocrlf істинне введення хибне -------------------------------------------------- -------- вчинити | конвертувати? ? новий | в LF (перетворити на LF?) (немає перетворення?) вчинити | перетворити в? немає існуючі | LF (перетворити на LF?) Перетворення замовлення | перетворити в? немає існуючі | Перетворення CRLF (немає перетворення?)
Я не дуже шукаю думок щодо плюсів і мінусів різних установок. Я просто шукаю дані, які дозволяють зрозуміти, як очікувати, що Git працює з кожним із трьох налаштувань.
-
Оновлення 17.04.2012 : Прочитавши статтю Тіма Клема, пов'язану JJD у коментарях, я змінив деякі значення у "невідомі" значення у таблиці вище, а також змінив "замовлення існуючих | true для конвертування до CRLF замість перетворення на клієнта ". Ось такі визначення, які він дає, які більш чіткі, ніж усе, що я бачив деінде:
core.autocrlf = хибний
Це за замовчуванням, але більшості людей рекомендується негайно змінити це. Результатом використання false є те, що Git ніколи не возиться із закінченнями рядків у вашому файлі. Ви можете перевірити файли з LF або CRLF або CR або випадковим поєднанням цих трьох, а Git не хвилює. Це може ускладнити читання та злиття складніше. Більшість людей, що працюють у світі Unix / Linux, використовують це значення, оскільки у них немає проблем із CRLF, і Git не потребує додаткової роботи, коли файли записуються в базу даних об'єктів або записуються у робочий каталог.
core.autocrlf = вірно
Це означає, що Git буде обробляти всі текстові файли та гарантувати, що CRLF замінюється на LF під час запису цього файлу в об’єктну базу даних та повертає весь LF назад у CRLF, виписуючи у робочий каталог. Це рекомендований параметр для Windows, оскільки він забезпечує, що ваш сховище можна використовувати на інших платформах, зберігаючи CRLF у вашому робочому каталозі.
core.autocrlf = вхід
Це означає, що Git буде обробляти всі текстові файли та гарантувати, що CRLF замінюється на LF під час запису цього файлу в об’єктну базу даних. Однак це не зробить зворотного. Коли ви читаєте файли назад із бази даних об'єктів і записуєте їх у робочу директорію, вони все ще матимуть LF, щоб позначити кінець рядка. Цей параметр зазвичай використовується в Unix / Linux / OS X для запобігання запису CRLF в сховище. Ідея полягає в тому, що якщо ви вставили код з веб-браузера і випадково отримали CRLF в один із своїх файлів, Git переконається, що вони були замінені на LF, коли ви писали в об’єктну базу даних.
Стаття Тіма відмінна. Єдине, про що я можу вважати, цього не вистачає, це те, що він припускає, що сховище у форматі LF, що не обов'язково відповідає дійсності, особливо для проектів, що стосуються лише Windows.
Порівнюючи статтю Тіма з найвищою відповіді на сьогодні на jmlane, показує ідеальну згоду щодо правдивих та вхідних налаштувань та незгоду щодо помилкових налаштувань.
autocrlf
в БРЕХНЯ здається набагато простіше;) stackoverflow.com/questions/2333424 / ...