Следующий bash script медленный при сканировании каталогов .git, потому что он смотрит на каждый каталог. Если у меня есть коллекция больших репозиториев, для поиска потребуется много времени, чтобы найти все каталоги, ища .git. Это будет намного быстрее, если оно будет обрезать каталоги в репозиториях, как только будет найден каталог .git. Любые идеи о том, как это сделать, или есть ли другой способ написать bash script, который выполняет одно и то же?
#!/bin/bash
# Update all git directories below current directory or specified directory
HIGHLIGHT="\e[01;34m"
NORMAL='\e[00m'
DIR=.
if [ "$1" != "" ]; then DIR=$1; fi
cd $DIR>/dev/null; echo -e "${HIGHLIGHT}Scanning ${PWD}${NORMAL}"; cd ->/dev/null
for d in `find . -name .git -type d`; do
cd $d/.. > /dev/null
echo -e "\n${HIGHLIGHT}Updating `pwd`$NORMAL"
git pull
cd - > /dev/null
done
В частности, как бы вы использовали эти параметры? Для этой проблемы вы не можете предположить, что коллекция репозиториев находится в одном каталоге; они могут находиться внутри вложенных каталогов.
top
repo1
dirA
dirB
dirC
repo1