Какое дело в том, что VCS я использую, чтобы беспокоиться о том, что я вложил в свои файлы? Я не понимаю, что здесь. Является ли git контролем версий или синтаксисом?
Почему git заботится о завершении пробела в моих файлах?
Ответ 1
Это связано с тем, что одно из самых распространенных применений для Git отправляет ряд исправлений по электронной почте. Трейлинг пространства вызывают проблемы с электронной почтой и, как правило, удаляются, что означает, что любые конечные пробелы будут потеряны при отправке патча по электронной почте и его применении. Это, в свою очередь, означает, что если в репозитории есть промежутки времени на линиях, но не в применяемом патче, вы можете получить ложные конфликты или дополнительные изменения, которые не были предназначены, при применении патча.
Ключ предварительной фиксации, который был включен по умолчанию, но больше не. Кажется, я забыл; он никогда не включался по умолчанию. Как указывали другие, это всегда было образцом предварительного схватывания; он был отключен, не давая ему бит выполнения, но что-то, что можно получить довольно легко (например, работает под Cygwin в Windows), поэтому в более новых версиях Git (поскольку более года назад) образцы были отключены, получив имя pre-commit.sample
. Вы можете удалить или переместить ваш .git/hooks/pre-commit
, чтобы этот крюк не выполнялся, если вам не нравится поведение. Вы также должны обновить свой Git до более позднего, так как это исправлено довольно долгое время.
Ответ 2
Git все равно. Примером предварительного фиксации является проверка пробелов как демонстрация того, как писать крючок, но по умолчанию он не включен; вы должны сделать его исполняемым для него, чтобы что-либо сделать.
Ответ 3
Почему? Поскольку конечные пробелы легко теряются, они приводят к ложным изменениям и не применяются исправления (из-за изменения пробелов). Это вопрос соответствия стиля программирования.
Это говорит о том, что речь идет о pre-commit
hook: вы можете отредактировать его или отключить, или настроить конечные пробелы (возможно, только для некоторых типов файлов), чтобы не считаться ошибкой.
Ключ pre-commit
должен быть отключен по умолчанию, но более старые версии (до 1.6.0), используемые для их установки, отключены, если отключены разрешения на выполнение, что может не работать на не- Файловые системы UNIX, такие как FAT; с 1.6.0 они установлены отключены (отключены), добавив суффикс ".sample".
Ответ 4
Как писал hobbs, пример pre-commit hook может делать проверку для конечных пробелов. Чтобы отключить его, загляните в .git/hooks
и убедитесь, что файлы там не исполняются.
Один из возможных способов, с помощью которого крючки могли быть активированы, заключается в том, что исполняемый бит может быть установлен, если вы перемещаете свое репо на флеш-накопителе FAT.
Ответ 5
Это не вопрос VCS, который пытается рассказать вам, какой хороший стиль программирования. Дело в том, что конечные пробелы плохо для них, потому что конечные пробелы можно рассматривать как бесполезную модификацию VCS.
Как это так?
Представьте, что у вас есть такая строка:
puts "Hello World"^M^M^M
Где каждый "^ M" является завершающим пробелом (чтобы упростить).
Другой разработчик случайно меняет это следующим образом:
puts "Hello World"^M^M
VCS увидит это как изменение. Бесполезный, который вообще не мешает коду, а меняется. Такое изменение может даже указывать на VCS как на конфликт (чего следует избегать, когда это возможно). Кроме того, он без проблем загрязняет вашу историю.
Ответ 6
Вы можете обойти это с помощью переключателя -no-verify, см. http://git-scm.com/docs/githooks