2013-10-09 2 views
2

Иногда люди непреднамеренно меняют стиль эла при совершении кодов. Как позволить git остановить их от этого? Я искал эту тему и узнал, что большинство ответов сосредоточено на том, как превращать файлы в определенный стиль eol. Но я не хочу этого поведения. Я просто хочу, чтобы коммиттеры соответствовали стилю eol исходных файлов: \ n или \ r \ n. Может ли это сделать?Как разрешить git отказаться от изменения стиля eol?

ответ

0

Мне просто нужно заставить коммиттеров соответствовать оригинальному стилю, который автор выбрал. Иными словами, нельзя преобразовать \ n в \ r \ n или преобразовать \ r \ n в \ n. Но мне все равно, что оригинальный стиль eol

Если у вас есть core.autocrlf set to false, git не будет пытаться конвертировать ничего в любое время.

Но это также означает, что пользовательский редактор может изменить eol без Git, зная что-нибудь об этом: Git не запоминает eol во время проверки.
Это означает, что он проверит все, что было изменено пользователем (включая изменения eol).

Вы, , можете попробовать post-checkout hook, который будет отвечать за запоминание этой информации для вас, но это кажется немного излишним.
Я предпочитаю регистрировать нормализацию для определенных типов файлов в файлах .gitattributes, как иллюстрирует следующий раздел этого ответа.


Orginal Ответ, иллюстрирующий то, что Git может применять время фиксации:

Вы можете зарегистрировать EOL вы хотите (для определенных типов файлов) в .gitattributes files с директивами Eol:

text 

Этот атрибут включает и контролирует нормализацию конца строки.
Когда текстовый файл нормализуется, его окончания строки преобразуются в LF в репозитории.
Чтобы определить, какой стиль окончания строки используется в рабочем каталоге, использует атрибут eol для одного файла и переменную конфигурации core.eol для всех текстовых файлов.

eol 

Этот атрибут задает определенный тип завершения строк, которые будут использоваться в рабочем каталоге.
Он обеспечивает нормализацию конца строки без каких-либо проверок содержимого, эффективно устанавливая текстовый атрибут.

Набор для строкового значения «crlf»

Этой настройка силы Git для нормализации конца строки для этого файла на оформленном и конвертировать их в CRLF когда файл извлечен.

Набор для строкового значения «lf»

Этой настройка силы Git нормализовать концы строк в LF на оформленном и предотвращает превращение в CRLF когда файл извлечен.

Например:

*.sh  eol=lf 

Интерес к регистрации этих директив в файле .gitattributes что он будет настойчив через репозиторий клонирования.

+0

спасибо. Но я не хочу нормализации. Мне просто нужно заставить коммиттеров соответствовать оригинальному стилю, который автор выбрал. Иными словами, нельзя преобразовать \ n в \ r \ n или преобразовать \ r \ n в \ n. Но мне все равно, что такое оригинальный стиль eol. –

+0

@AlvinCao Git не помнит, какой eol использовался в файле, когда коммиттер первоначально начал его изменять: он может только применять стиль для фиксации, и этот стиль не может быть «тем, что использовалось при проверке», потому что Git никогда не запоминает эту конкретную информацию в любом месте. – VonC

+0

@AlvinCao Я отредактировал свой ответ, чтобы принять во внимание ваш комментарий. – VonC