#!/usr/bin/env bash # Update all top-level Git repository clones within my Code directories to their # latest version. set -o errexit set -o nounset dirs=$(find "$REPOS" -mindepth 1 -maxdepth 2 -type d -name .git -not -path '*/*.old/*') for dir in $dirs; do repo_path="${dir%/.git}" cd "${repo_path}" # If the repo is a bare clone, the commands need to be run within the # worktree directory. [[ -f .bare/worktrees/main/gitdir && -d main && -f main/.git ]] && cd main echo "Updating $(pwd)" # Update the repository. git fetch --all --jobs=4 --progress --prune git pull --rebase done