В сообщении commit-msg отсутствует файл коммитов - PullRequest
1 голос
/ 25 января 2020

Я пытаюсь написать хук commit-msg, чтобы отформатировать мои сообщения коммита для переноса при максимальной ширине столбца:

#!/bin/bash

format_max_column_width() {
  MAX_LINE_LENGTH_CHARS=50

  cat "$1" | grep -v "^Bug: |^Change-Id: |^Signed-off-by: |^CC: " > body
  cat "$1" | grep "^Bug: |^Change-Id: |^Signed-off-by: |^CC: " > footer
  fmt -w "$MAX_LINE_LENGTH_CHARS" body > body
  cat body > "$1"
  cat footer >> "$1"
  rm body footer
}

format_max_column_width

По какой-то причине, когда я делаю коммит, я получаю следующее ошибки, потому что $ 1 кажется пустым.

cat: '': No such file or directory
cat: '': No such file or directory
.git/hooks/commit-msg: line 9: : No such file or directory
.git/hooks/commit-msg: line 10: : No such file or directory

Более того, если я просто echo $1, ничего не будет напечатано, подтверждая эту теорию. Что происходит?

1 Ответ

2 голосов
/ 25 января 2020

Внутри функции оболочки $1 означает «первый параметр функции », а не сценария. Вам необходимо передать первый параметр скрипта в функцию:

format_max_column_width "$1"
...