Skip to content

Instantly share code, notes, and snippets.

@radavis
Created June 8, 2023 16:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save radavis/ef3f71d7724027496eb5a1d861ef7669 to your computer and use it in GitHub Desktop.
Save radavis/ef3f71d7724027496eb5a1d861ef7669 to your computer and use it in GitHub Desktop.
Keep a list of repositories up-to-date, locally.
#!/usr/bin/env bash
set -Eeuo pipefail
# bin/fetch - Fetch or clone repositories from $(pwd)/Reposfile. Useful
# for keeping a list of repositories up-to-date.
# usage: ./bin/fetch [--verbose]
repos="$(pwd)/Reposfile"
flags="$*"
[ -z "$flags" ] && flags="--quiet"
while read repo; do
filename="${repo##*/}"
foldername="${filename%%.*}"
if [ ! -d "$foldername" ]; then
echo "Cloning $repo"
git clone "$flags" "$repo"
else
git -C "$foldername" fetch "$flags"
fi
done < "$repos"
git@github.com:username/reponame.git
git@gitlab.com:username/another-repo.git
@radavis
Copy link
Author

radavis commented Jun 8, 2023

If you simply want to clone a list of repositories in a Reposfile: <Reposfile xargs -I % git clone %

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment