5
การจัดระเบียบที่เก็บ Git ด้วยโมดูลย่อยที่ซ้อนกันทั่วไป
ฉันเป็นแฟนตัวยงของGit ย่อยโมดูล ฉันชอบที่จะสามารถติดตามการพึ่งพาพร้อมกับเวอร์ชันเพื่อให้คุณสามารถย้อนกลับไปเป็นเวอร์ชันก่อนหน้าของโครงการของคุณและมีเวอร์ชันที่สอดคล้องกันของการพึ่งพาเพื่อสร้างอย่างปลอดภัยและเรียบร้อย ยิ่งไปกว่านั้นมันง่ายกว่าที่จะปล่อยไลบรารี่ของเราเป็นโครงการโอเพ่นซอร์สเนื่องจากประวัติของไลบรารี่นั้นแยกจากแอพพลิเคชั่นที่ขึ้นอยู่กับพวกมัน ฉันกำลังตั้งค่าเวิร์กโฟลว์สำหรับหลายโครงการในที่ทำงานและฉันสงสัยว่ามันจะเป็นอย่างไรถ้าเราใช้วิธีนี้แบบสุดขั้วแทนที่จะมีโครงการเสาหินเดียว ฉันรู้อย่างรวดเร็วมีความสามารถที่มีศักยภาพของเวิร์มในจริงๆโดยใช้โมดูลย่อย เผื่อว่าคู่ของการใช้งาน: studioและplayerและขึ้นอยู่กับห้องสมุดcore, graphและnetworkที่อ้างอิงมีดังนี้ core เป็นแบบสแตนด์อโลน graphขึ้นอยู่กับcore(โมดูลย่อยที่./libs/core) networkdepdends on core(โมดูลย่อยที่./libs/core) studioขึ้นอยู่กับgraphและnetwork(โมดูลย่อยที่./libs/graphและ./libs/network) playerขึ้นอยู่กับgraphและnetwork(โมดูลย่อยที่./libs/graphและ./libs/network) สมมติว่าเรากำลังใช้CMakeและแต่ละโครงการเหล่านี้มีการทดสอบหน่วยและงานทั้งหมด แต่ละโครงการ (รวมถึงstudioและplayer) จะต้องสามารถรวบรวมได้แบบสแตนด์อโลนเพื่อดำเนินการวัดรหัสการทดสอบหน่วย ฯลฯ สิ่งที่เป็นแบบเรียกซ้ำgit submodule fetchแล้วคุณจะได้รับโครงสร้างไดเรกทอรีต่อไปนี้: studio/ studio/libs/ (sub-module depth: 1) studio/libs/graph/ studio/libs/graph/libs/ (sub-module depth: 2) studio/libs/graph/libs/core/ studio/libs/network/ studio/libs/network/libs/ (sub-module depth: 2) studio/libs/network/libs/core/ ขอให้สังเกตว่าcoreถูกโคลนสองครั้งในstudioโครงการ นอกเหนือจากพื้นที่ดิสก์นี้เสียผมมีปัญหาการสร้างระบบเพราะผมกำลังสร้างcoreสองครั้งและผมอาจจะได้รับสองรุ่นต่าง ๆ coreของ คำถาม ฉันจะจัดระเบียบโมดูลย่อยเพื่อให้ได้รับการอ้างอิงเวอร์ชันและบิลด์แบบสแตนด์อโลนโดยไม่ได้รับสำเนาย่อยของโมดูลย่อยทั่วไปหลาย ๆ ชุดได้อย่างไร …
50
git
cmake
submodules