| #!/usr/bin/env bash |
| ## |
| ## SPDX-License-Identifier: GPL-2.0-only |
| |
| # In the hooks, use the same `make` tool as used when running `make gitconfig`, |
| # e.g. `remake gitconfig` will set `remake` to be run by the hooks. |
| MAKE="${1:-make}" |
| |
| if ! { cdup="$(git rev-parse --show-cdup 2>/dev/null)" && [ -z "${cdup}" ]; } |
| then |
| echo "Error: Not in root of a git repository" |
| exit 1 |
| fi |
| coreboot_hooks=$(git rev-parse --git-path hooks) |
| mkdir -p "${coreboot_hooks}" |
| for hook in commit-msg pre-commit ; do |
| if [ util/gitconfig/${hook} -nt "${coreboot_hooks}/${hook}" ] \ |
| || [ ! -x "${coreboot_hooks}/${hook}" ] |
| then |
| sed -e "s,%MAKE%,${MAKE},g" util/gitconfig/$hook \ |
| > "${coreboot_hooks}/${hook}" |
| chmod +x "${coreboot_hooks}/${hook}" |
| fi |
| done |
| # Now set up the hooks for 3rdparty/ |
| for submodule in 3rdparty/blobs libhwbase libgfxinit; do |
| hooks=$(git -C "$(git config --file .gitmodules --get \ |
| submodule.${submodule}.path)" rev-parse --git-path hooks) |
| if [ -d "${hooks}" ]; then |
| if [ util/gitconfig/commit-msg -nt "${hooks}/commit-msg" ] \ |
| || [ ! -x "${hooks}/commit-msg" ] |
| then |
| sed -e "s,%MAKE%,${MAKE},g" util/gitconfig/commit-msg \ |
| > "${hooks}/commit-msg" |
| chmod +x "${hooks}/commit-msg" |
| fi |
| fi |
| done |
| for d in 3rdparty/{blobs,libhwbase,libgfxinit}; do |
| if [ -d $d ]; then |
| (cd $d || exit 1 |
| git config remote.origin.push HEAD:refs/for/main) |
| fi |
| done |
| |
| git config remote.origin.push HEAD:refs/for/main |
| git config alias.sup "!git submodule update --remote --rebase && \ |
| git submodule update --init --checkout" |
| |
| git config alias.sup-destroy "!git submodule deinit --all --force; \ |
| git submodule update --init --checkout" |
| |
| { git config --includes user.name && \ |
| git config --includes user.email; } >/dev/null || \ |
| { cat <<-EOMSG |
| Please configure your name and email in git: |
| |
| git config --global user.name "Your Name Comes Here" |
| git config --global user.email your.email@example.com |
| EOMSG |
| exit 1; } |