#git
#git
Вопрос:
Итак, трейлеры git (https://git-scm.com/docs/git-interpret-trailers ) поддерживает многострочные прицепы, «сворачивая» их, что означает, что последующие строки начинаются с одного пробела, чтобы указать, что они все еще принадлежат текущему прицепу.
В документации говорится:
При чтении трейлеров после токена, разделителя и значения могут быть пробелы. Внутри токена и значения также могут быть пробелы. Значение может быть разделено на несколько строк, причем каждая последующая строка начинается с пробела, как «сворачивание» в RFC 822.
Моя проблема в том, что git interpret-trailers --parse
сбой происходит, если такой многострочный трейлер содержит пустую строку.
Я пытаюсь добавить трейлер, содержащий одну или несколько пустых строк. Однако эти пустые строки правильно свернуты, они содержат один пробел (так что это эквивалентно подписи PGP, которая добавляется в заголовок фиксации, который также содержит пустую строку, которая, однако, сворачивается)
Но если я это сделаю, git interpret-trailers --parse
просто ничего не выводит.
$ echo "Test" > test.txt
$ git interpret-trailers --where end --if-exists addIfDifferent --trailer "SingleLineTrailer: This is a single line trailer" --in-place test.txt
$ git interpret-trailers --where end --if-exists addIfDifferent --trailer "MultiLineTrailer: This is"
содержимое test.txt это сейчас:
$ cat test.txt
Test
SingleLineTrailer: This is a single line trailer
MultiLineTrailer: This is
a folded multi-line
trailer
и синтаксический анализ работает (он анализирует несколько строк в одну строку, что неожиданно, но, по крайней мере, что-то делает):
$ git interpret-trailers --parse test.txt
SingleLineTrailer: This is a single line trailer
MultiLineTrailer: This is a folded multi-line trailer
Однако теперь я добавляю многострочный трейлер, который содержит свободную строку (однако правильно сложенную с использованием пробела).:
$ git interpret-trailers --where end --if-exists addIfDifferent --trailer "MultiLineTrailer: This is"
что приводит, как и ожидалось, к следующему содержанию:
$ cat test.txt
Test
SingleLineTrailer: This is a single line trailer
MultiLineTrailer: This is
a folded multi-line
trailer
MultiLineTrailer: This is
a folded multi-line
trailer which
contains an
empty line
однако выполнение git interpret-trailers --parse
не приводит к выводу (но код выхода равен 0):
$ git interpret-trailers --parse test.txt
$ echo $?
0
версия git git version 2.30.0.windows.2
Итак, это ошибка в git или такое поведение ожидается?
Комментарии:
1. Это хороший вопрос. В списке рассылки Git было много дискуссий о коде трейлера; вероятно, стоит поискать его, чтобы узнать, есть ли претензии в ту или иную сторону.
2. С git v2.35 это также не работает.
n a folded multi-linen trailer' --in-place test.txt
содержимое test.txt это сейчас:
и синтаксический анализ работает (он анализирует несколько строк в одну строку, что неожиданно, но, по крайней мере, что-то делает):
Однако теперь я добавляю многострочный трейлер, который содержит свободную строку (однако правильно сложенную с использованием пробела).:
что приводит, как и ожидалось, к следующему содержанию:
однако выполнение git interpret-trailers --parse
не приводит к выводу (но код выхода равен 0):
версия git git version 2.30.0.windows.2
Итак, это ошибка в git или такое поведение ожидается?
Комментарии:
1. Это хороший вопрос. В списке рассылки Git было много дискуссий о коде трейлера; вероятно, стоит поискать его, чтобы узнать, есть ли претензии в ту или иную сторону.
2. С git v2.35 это также не работает.
n a folded multi-linen trailer whichn n contains ann empty line' --in-place test.txt
что приводит, как и ожидалось, к следующему содержанию:
однако выполнение git interpret-trailers --parse
не приводит к выводу (но код выхода равен 0):
версия git git version 2.30.0.windows.2
Итак, это ошибка в git или такое поведение ожидается?
Комментарии:
1. Это хороший вопрос. В списке рассылки Git было много дискуссий о коде трейлера; вероятно, стоит поискать его, чтобы узнать, есть ли претензии в ту или иную сторону.
2. С git v2.35 это также не работает.
n a folded multi-linen trailer’ —in-place test.txt
содержимое test.txt это сейчас:
и синтаксический анализ работает (он анализирует несколько строк в одну строку, что неожиданно, но, по крайней мере, что-то делает):
Однако теперь я добавляю многострочный трейлер, который содержит свободную строку (однако правильно сложенную с использованием пробела).:
что приводит, как и ожидалось, к следующему содержанию:
однако выполнение git interpret-trailers --parse
не приводит к выводу (но код выхода равен 0):
версия git git version 2.30.0.windows.2
Итак, это ошибка в git или такое поведение ожидается?
Комментарии:
1. Это хороший вопрос. В списке рассылки Git было много дискуссий о коде трейлера; вероятно, стоит поискать его, чтобы узнать, есть ли претензии в ту или иную сторону.
2. С git v2.35 это также не работает.