หมายเหตุ: นี่คือจาก 2009 และอาจได้ดี แต่ตอนนี้มีตัวเลือกที่ดีกว่า
เราใช้สิ่งนี้ มันเรียกว่าgit-pup
:
#!/bin/bash
# Exists to fully update the git repo that you are sitting in...
git pull && git submodule init && git submodule update && git submodule status
เพียงวางไว้ในไดเรกทอรีช่องเก็บที่เหมาะสม (/ usr / local / bin) ถ้าบน Windows คุณอาจต้องแก้ไขไวยากรณ์เพื่อให้มันทำงาน :)
ปรับปรุง:
ในการตอบสนองต่อความคิดเห็นโดยผู้เขียนต้นฉบับเกี่ยวกับการดึงในหัวทั้งหมดของ submodules ทั้งหมด - นั่นเป็นคำถามที่ดี
ฉันค่อนข้างมั่นใจว่าgit
ไม่มีคำสั่งสำหรับสิ่งนี้ภายใน ในการที่จะทำเช่นนั้นคุณจะต้องระบุว่า HEAD นั้นมีไว้เพื่ออะไร นั่นอาจจะง่ายเหมือนการบอกว่าmaster
เป็นสาขาที่ทันสมัยที่สุด ฯลฯ ...
ติดตามสิ่งนี้สร้างสคริปต์ง่าย ๆ ที่ทำสิ่งต่อไปนี้:
- ตรวจสอบที่
git submodule status
เก็บ "แก้ไข" อักขระตัวแรกของบรรทัดเอาต์พุตระบุสิ่งนี้ หากมีการแก้ไข repo ย่อยคุณอาจไม่ต้องการดำเนินการต่อ
- สำหรับแต่ละ repo จดทะเบียน, CD
git checkout master && git pull
ลงในไดเรกทอรีของมันและเรียกใช้ ตรวจสอบข้อผิดพลาด
- ในตอนท้ายฉันขอแนะนำให้คุณพิมพ์หน้าจอไปยังผู้ใช้เพื่อระบุสถานะปัจจุบันของ submodules - บางทีพวกเขาจะเพิ่มทั้งหมดและกระทำ
ฉันต้องการพูดถึงว่าสไตล์นี้ไม่ได้เป็นสิ่งที่ submodules คอมไพล์ได้รับการออกแบบมาสำหรับ โดยทั่วไปคุณต้องการพูดว่า "LibraryX" เป็นรุ่น "2.32" และจะยังคงอยู่จนกว่าฉันจะบอกให้ "อัปเกรด"
นั่นคือในแง่หนึ่งสิ่งที่คุณกำลังทำกับสคริปต์ที่อธิบายไว้ แต่โดยอัตโนมัติมากขึ้น ต้องระวัง!
อัปเดต 2:
หากคุณอยู่บนแพลตฟอร์ม windows คุณอาจต้องการใช้ Python เพื่อใช้งานสคริปต์เนื่องจากมีความสามารถในด้านเหล่านี้ หากคุณใช้ระบบยูนิกซ์ / ลินุกซ์ฉันขอแนะนำให้ใช้สคริปต์ทุบตี
ต้องการคำชี้แจงใด ๆ ? เพียงแค่แสดงความคิดเห็น