Author Archive phunsanit

Byphunsanit

Git: update all Multi-repo

งานที่ทำอยู่ใน Workspace เดียวกันมีแบ่ง folder ย่อย ๆ ออกเป็น project เล็ก ๆ แต่ละตัวก็จะมี git เป็นของตัวเอง เรียก Multi-repo, Independent Repos, Polyrepo หรืออะไรก็เถอะ แต่เวลาผ่านไปซักพัก สิ่งที่ต้องทำเป็นประจำคือ update git ที่อยู่ใน folder ย่อย ๆ พวกนี้ ทำไปทำมา มันก็งอกออกมาจนเบื่อที่จะ cd เข้าออก เพื่อ update ทีละ ส่วน ๆ เลยเขียน shell script มา update มันซะจะได้จบ ๆ ไป

  1. ไปที่ Workspace ที่เก็บ project ทั้งหมดก่อน เช่น
    cd /Users/Shared/Gits/phunsanit
  2. สร้างไฟล์ โดยคำสั่ง
    touch git-update-all.sh
  3. เปลี่ยนสิทธิ์ใหม่
    chmod +x git-update-all.sh
  4. ใส่เนื้อหา
#!/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 ไปให้จนครบ