Как поэтапно выполнять поэтапный ввод в git gui, хотя предупреждение "Нет новой строки в конце файла"

Я использую git gui, чтобы выбрать строки для постановки. Это обычно работает как шарм. Мне известно о возможности сделать то же самое в командной строке.

Всякий раз, когда у файла изначально нет новой строки в конце файла, git gui распознает это и добавляет предупреждающее сообщение в редактор, как я показал на скриншоте.

Git Gui

проблема

Проблема, которая возникает из-за пропущенного разрыва строки, состоит в том, что больше нельзя ставить и фиксировать отдельные строки. Когда я щелкаю правой кнопкой мыши, чтобы выбрать конкретную строку и выбрать Стадия строки для фиксации из контекстного меню, появляется сообщение об ошибке.

ошибка: роковая: испорченная страница в строке 11.

Проблема не является специфической для операционной системы и может быть воспроизведена в Windows, MacOSX и Linux. Я знаю, что могу избежать этой проблемы, если добавлю новую строку в файл и передам эту версию, прежде чем продолжить выбор отдельных строк.

Шаги, чтобы воспроизвести проблему

  1. Инициализируйте новый репозиторий.
  2. Создайте файл с тремя строками контента со словом "Hallo". Не ставьте новую строку в конце файла.
  3. Добавьте и передайте файл.
  4. Отредактируйте тот же файл, поместив слова между тремя строками.
  5. Откройте git gui и попробуйте вносить изменения построчно.

Запрос

Интересно, есть ли какая-нибудь конфигурация для Git, которая позволяет мне обойти проблему. Некоторый автоматизм, такой как ловушка, которая добавляет желаемую новую строку, также подойдет.

Сообщение об ошибке

Я отправил сообщение об ошибке в список рассылки Git. Вы можете следить и участвовать в обсуждении здесь.

2 ответа

Решение

Благодаря Heiko Voigt есть исправление для поведения. Мы исправили это на конференции Git-Merge - спасибо GitHub за организацию этого. Патч находится на рассмотрении в списке рассылки в данный момент. Как только это будет объединено и выпущено, я собираюсь обновить этот пост здесь.


Наконец, gitgui-0.18.0 был объединен с git v1.8.4 и является частью официального релиза (23 августа 2013 г.). Теперь каждый может наслаждаться постановкой коммитов, независимо от новой строки в конце файла. Еще раз спасибо Хайко!

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

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

Проблемный случай:

Я использовал скрипт в рабочем процессе git rebase. Это заставило git изменить все файлы, которые имеют конечные пробелы. Это привело к массивной разнице. Поэтому рекомендую продумать использование скрипта.


Кроме того, я нашел это обсуждение о том, как интегрировать хуки в несколько репозиториев, довольно интересно. Возможно, вы захотите разобраться в этом при настройке собственных хуков.

Другие вопросы по тегам