git commit -a --file message.txt; git format-patch удаляет новые строки из message.txt - PullRequest
0 голосов
/ 13 ноября 2018

При использовании текстового файла для сообщения фиксации git commit -a --file message.txt и последующем создании файла исправления с git format-patch сообщение фиксации записывается со всеми разделителями новой строки (Linux).

Похоже, виновником являетсяformat-patch

По умолчанию тема отдельного патча - «[PATCH]» с последующим объединением строк от сообщения фиксации до первой пустой строки (см. Раздел DISCUSSION в git-commit [1]).

Я пока не смог найти способ изменить это поведение по умолчанию.Есть ли способ?

Как мне изменить его так, чтобы он дословно взял сообщение фиксации из message.txt и поместил его в сгенерированный файл 0001-xxx.patch?

, то есть из

* change 1
* change 2

он переходит к

* change 1 * change 2

при запуске git format-patch, и я, очевидно, хочу, чтобы он сохранял символы новой строки.

Вот как я проверяю результат:

less message.txt
git commit -a --file message.txt
git format-patch -1 my_branch
less *.patch

Чтобы уточнить и подтвердить, git show показывает сообщение о фиксации с неповрежденными символами новой строки.Я использую термин Linux.

РЕДАКТИРОВАТЬ: переписать вопрос, чтобы отразить формат-патч в основе проблемы

РЕДАКТИРОВАТЬ2: Я нашел обходной путь: в случае, если есть пустая строкапосле первой строки в message.txt остальная часть формата файла сохраняется.

Так вот, как я должен отформатировать сообщение. txt

 first line 
 empty line
 * change 1
 * change 2

С этим я решилМоя непосредственная проблема, но я не уверен, что это правильно.

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Git не предлагает возможность изменить это. git format-patch нужна тема для исправлений, которые он форматирует, поскольку они по сути являются сообщениями электронной почты. Как таковой, он должен принимать некоторый формат для сообщений фиксации.

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

Текст "по умолчанию", который вы упомянули выше, означает, что вы можете использовать опцию --subject-prefix для настройки части сообщения [PATCH], а не для выбора темы сообщения электронной почты.

0 голосов
/ 14 ноября 2018

Вы можете использовать шаблоны коммитов.

Я не знаю, подходит ли вам это, поскольку вам может потребоваться другое сообщение для коммита , но все равно полезно, если другие тоже не могут извлечь из этого пользу .

git commit.template

  • создать файл шаблона фиксации с вашим содержимым

    # set the commit template in your global git config
    git config --global commit.template <.git-commit-template.txt file path>
    
  • Теперь ваш ~/.gitconfig должен содержать:

    [commit]
        template = <.git-commit-template.txt file path>
    
  • Если вы хотите использовать пустой коммит

    # If you allow empty commit messages set
    git config --global commit.cleanup strip
    

--cleanup=<mode>

Этот параметр определяет способ очистки сообщения фиксации.
<mode> может быть одним из verbatim, whitespace, strip и default.

Режим default удаляет начальные и конечные пустые строки и #commentary из сообщения фиксации, только если сообщение подлежит редактированию.В противном случае удаляются только пробелы.

-------------------------------------------------------------------
| Mode         | Description                                      |
---------------|--------------------------------------------------|
| verbatim     | does not change message at all,                  |
| whitespace   | removes just leading/trailing whitespace lines   |
| strip        | removes both whitespace and commentary.          |
-------------------------------------------------------------------
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...