Как поэтапно выполнять поэтапный ввод в git gui, хотя предупреждение "Нет новой строки в конце файла"
Я использую git gui, чтобы выбрать строки для постановки. Это обычно работает как шарм. Мне известно о возможности сделать то же самое в командной строке.
Всякий раз, когда у файла изначально нет новой строки в конце файла, git gui распознает это и добавляет предупреждающее сообщение в редактор, как я показал на скриншоте.
проблема
Проблема, которая возникает из-за пропущенного разрыва строки, состоит в том, что больше нельзя ставить и фиксировать отдельные строки. Когда я щелкаю правой кнопкой мыши, чтобы выбрать конкретную строку и выбрать Стадия строки для фиксации из контекстного меню, появляется сообщение об ошибке.
ошибка: роковая: испорченная страница в строке 11.
Проблема не является специфической для операционной системы и может быть воспроизведена в Windows, MacOSX и Linux. Я знаю, что могу избежать этой проблемы, если добавлю новую строку в файл и передам эту версию, прежде чем продолжить выбор отдельных строк.
Шаги, чтобы воспроизвести проблему
- Инициализируйте новый репозиторий.
- Создайте файл с тремя строками контента со словом "Hallo". Не ставьте новую строку в конце файла.
- Добавьте и передайте файл.
- Отредактируйте тот же файл, поместив слова между тремя строками.
- Откройте git gui и попробуйте вносить изменения построчно.
Запрос
Интересно, есть ли какая-нибудь конфигурация для Git, которая позволяет мне обойти проблему. Некоторый автоматизм, такой как ловушка, которая добавляет желаемую новую строку, также подойдет.
Сообщение об ошибке
Я отправил сообщение об ошибке в список рассылки Git. Вы можете следить и участвовать в обсуждении здесь.
2 ответа
Благодаря Heiko Voigt есть исправление для поведения. Мы исправили это на конференции Git-Merge - спасибо GitHub за организацию этого. Патч находится на рассмотрении в списке рассылки в данный момент. Как только это будет объединено и выпущено, я собираюсь обновить этот пост здесь.
- http://www.mail-archive.com/git@vger.kernel.org/msg25556.html
- http://github.com/hvoigt/git/tree/hv/git-gui-fix-no-newline
Наконец, gitgui-0.18.0 был объединен с git v1.8.4 и является частью официального релиза (23 августа 2013 г.). Теперь каждый может наслаждаться постановкой коммитов, независимо от новой строки в конце файла. Еще раз спасибо Хайко!
Я нашел зацепку перед фиксацией, которая решает проблему. Тем не менее, это не идеальное решение, поскольку исправление применяется только до тех пор, пока вы фактически не зафиксируете файл. Я создал суть сценария, чтобы вы могли изменить его, если хотите улучшить его.
Оригинальный сценарий был опубликован Мэттом Бейкером. Я сократил это до факта добавления новой строки, но также включил процедуры для удаления конечных пробелов. Однако есть одно изменение в отношении символа перевода строки: я добавил \n
вопреки рекомендации Мэтта.
Проблемный случай:
Я использовал скрипт в рабочем процессе git rebase. Это заставило git изменить все файлы, которые имеют конечные пробелы. Это привело к массивной разнице. Поэтому рекомендую продумать использование скрипта.
Кроме того, я нашел это обсуждение о том, как интегрировать хуки в несколько репозиториев, довольно интересно. Возможно, вы захотите разобраться в этом при настройке собственных хуков.