งานที่ทำอยู่ใน Workspace เดียวกันมีแบ่ง folder ย่อย ๆ ออกเป็น project เล็ก ๆ แต่ละตัวก็จะมี git เป็นของตัวเอง เรียก Multi-repo, Independent Repos, Polyrepo หรืออะไรก็เถอะ แต่เวลาผ่านไปซักพัก สิ่งที่ต้องทำเป็นประจำคือ update git ที่อยู่ใน folder ย่อย ๆ พวกนี้ ทำไปทำมา มันก็งอกออกมาจนเบื่อที่จะ cd เข้าออก เพื่อ update ทีละ ส่วน ๆ เลยเขียน shell script มา update มันซะจะได้จบ ๆ ไป
- ไปที่ Workspace ที่เก็บ project ทั้งหมดก่อน เช่น
cd /Users/Shared/Gits/phunsanit
- สร้างไฟล์ โดยคำสั่ง
touch git-update-all.sh
- เปลี่ยนสิทธิ์ใหม่
chmod +x git-update-all.sh
- ใส่เนื้อหา
#!/bin/bash
# Loop through all sub-directories
for dir in */; do
# Check if the folder is a Git Repo (does it have a .git folder?)
if [ -d "$dir/.git" ]; then
echo "=========================================="
echo "Checking: $dir"
# Use subshell (...) to cd in, pull, and automatically return to original directory
(cd "$dir" && git pull)
else
echo "Skipping: $dir (Not a git repo)"
fi
done
echo "Script update completed."
exit 0
วิธีเรียกใช้งาน: พิมพ์ ./git-update-all.sh ใน Terminal เมื่ออยู่ในโฟลเดอร์นั้น script จะไปไล่ subfolder ข้างใน ถ้ามี .git อยู่ก็จะ run update ไปให้จนครบ