2

Git pre-commit フックを使用していくつかのスタイル チェックを実行し、git shortlog を使用してすべての貢献者の名前を取得する AUTHORS ファイルを自動的に生成しようとしています。

私のプレコミットスクリプトは次のもので構成されています。

#!/bin/sh
set -e

bin/update-authors.sh
...

update-authors.sh ファイルは次の内容で構成されます。

#!/bin/sh
set -e

# Get a list of authors ordered by number of commits
# and remove the commit count column
AUTHORS=$(git --no-pager shortlog -nse | cut -f 2-)
if [ -z "$AUTHORS" ] ; then
    echo "Authors list was empty"
    exit 1
fi

# Display the authors list and write it to the file
echo "$AUTHORS" | tee "$(git rev-parse --show-toplevel)/AUTHORS"

後者のスクリプトは端末から直接正常に動作しますが、プリコミット フックの間のみ、「作成者リストが空でした」というエラーが発生します。なぜこれを行っているのかわかりません-何かアイデアはありますか?

4

1 に答える 1

2

I think that when performing pre-commit hook, git keeps tree in semi-detached state, and that's why it doesn't get anything. As seen in the example pre-commit hook, you need to pass some branch/commit explicitly, e.g.:

AUTHORS=$(git --no-pager shortlog -nse HEAD | cut -f 2-)
于 2012-08-26T20:43:42.583 に答える