mirror of
https://github.com/flynx/git-utils.git
synced 2025-10-28 18:50:09 +00:00
76 lines
1.1 KiB
Bash
Executable File
76 lines
1.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
while true ; do
|
|
case $1 in
|
|
-h|--help)
|
|
echo "Usage: $(basename "$0") [OPTIONS] [PATH]"
|
|
echo
|
|
echo "List all repositories in PATH."
|
|
echo
|
|
echo "Options:"
|
|
echo " -h --help - print this message and exit"
|
|
echo " -r --recursive - list directories recursively"
|
|
echo " -o --origin - also print origin url"
|
|
echo
|
|
exit
|
|
;;
|
|
|
|
-r|--recursive)
|
|
RECURSIVE=1
|
|
shift
|
|
continue
|
|
;;
|
|
-o|--origin)
|
|
ORIGIN=1
|
|
shift
|
|
continue
|
|
;;
|
|
|
|
-*|--*)
|
|
echo "Error: unknown option: \"$1\"" >&2
|
|
exit
|
|
;;
|
|
*)
|
|
TARGET_PATH=$1
|
|
break
|
|
;;
|
|
esac
|
|
done
|
|
|
|
|
|
TARGET_PATH=${TARGET_PATH:=.}
|
|
cd "$TARGET_PATH"
|
|
|
|
if [ $RECURSIVE ] ; then
|
|
IFS=$'\n' \
|
|
DIRS=($(find . -name .git | sort))
|
|
else
|
|
IFS=$'\n' \
|
|
DIRS=(./*/.git)
|
|
fi
|
|
|
|
# XXX handle local repos...
|
|
getOrigin(){
|
|
if ! [ -z $ORIGIN ] ; then
|
|
cd "$1"
|
|
echo "=`git ls-remote --get-url origin`"
|
|
cd "$wd"
|
|
fi
|
|
}
|
|
|
|
# inside a repo...
|
|
if [ -d ./.git ] ; then
|
|
echo ".`getOrigin .`"
|
|
exit 0
|
|
fi
|
|
|
|
# do the update...
|
|
wd=$(pwd)
|
|
for dir in ${DIRS[@]} ; do
|
|
dir=${dir%.git}
|
|
echo "$dir`getOrigin "$dir"`"
|
|
done
|
|
|
|
|
|
# vim:set sw=4 ts=4 :
|