Информация об изменениях

Сообщение Re[4]: Git wtf?.. от 12.02.2016 15:04

Изменено 12.02.2016 15:51 ·

Здравствуйте, Mazenrab, Вы писали:

M>Похоже что так и было в студии, но конечно это большой сюрприз.

Да это вечная проблема. Если юзеры сидят под разными операционками, то конфликты неизбежны. Особенно под виндой. Скажем, если ты работаешь с родными виндовыми программами, то они ожидают crlf, а если скажем cygwin, то он хочет lf. Или если под виндой собираешь .tag.gz, который затем шлётся на линукс.

M>Сейчас поставил у себя autocrlf=false и склонировал репозиторий. Выяснилось что часть файлов в репозитории имеет LF формат EOL. Очень странно — значит у кого-то был autocrlf=false c которым он коммитил так что ли получается? А вот как теперь наладить чтобы у всех был CRLF не очень понятно. Мой первый порыв был сконвертить все EOL в CRLF и закомитить их в мастера. Но это ничего не даст веточникам. Как быть?

Обычно договорённость такая, что в репозитории всегда lf, а юзеры должны настраивать свои репозитории так, чтобы в рабочей копии были желаемые eols.
А сейчас можно пофиксить все ветки "главного" репозитория и навесить на него хук, чтобы он отпинывал все коммиты с crlf. В интернетах думаю можно найти готовый скрптик... или несложно написать самому. Правда непонятно как отличать текстовые файлы от бинарных, можно попробовать трюки типа этого...
Re[4]: Git wtf?..
Здравствуйте, Mazenrab, Вы писали:

M>Похоже что так и было в студии, но конечно это большой сюрприз.

Да это вечная проблема. Если юзеры сидят под разными операционками, то конфликты неизбежны. Особенно под виндой. Скажем, если ты работаешь с родными виндовыми программами, то они ожидают crlf, а если скажем cygwin, то он хочет lf. Или если под виндой собираешь .tag.gz, который затем шлётся на линукс.

M>Сейчас поставил у себя autocrlf=false и склонировал репозиторий. Выяснилось что часть файлов в репозитории имеет LF формат EOL. Очень странно — значит у кого-то был autocrlf=false c которым он коммитил так что ли получается? А вот как теперь наладить чтобы у всех был CRLF не очень понятно. Мой первый порыв был сконвертить все EOL в CRLF и закомитить их в мастера. Но это ничего не даст веточникам. Как быть?

Обычно договорённость такая, что в репозитории всегда lf, а юзеры должны настраивать свои репозитории так, чтобы в рабочей копии были желаемые eols.
А сейчас можно пофиксить все ветки "главного" репозитория и навесить на него хук, чтобы он отпинывал все коммиты с crlf. В интернетах думаю можно найти готовый скрптик... или несложно написать самому. Правда непонятно как отличать текстовые файлы от бинарных, можно попробовать трюки типа этого...

UPD: А, что-то торможу. Ведь git diff покажет crlf, а бинарики он игнорирует. Т.е. в хуке надо просто грепнуть выхлоп git diff на отсутствие crlf