ในแผนกของฉันเรากำลังพัฒนา AddOns ที่เล็กกว่าหลายตัวสำหรับเซิร์ฟเวอร์การสื่อสารแบบรวม สำหรับการกำหนดเวอร์ชันและการพัฒนาแบบกระจายเราใช้ Team Foundation Server 2012
แต่: มีโซลูชัน TFS ขนาดใหญ่เพียงรายการเดียวสำหรับแอปพลิเคชันและห้องสมุดทั้งหมดของเรา:
- ทางออกหลัก
- การประยุกต์ใช้งาน
- แอพ 1
- แอพ 2
- แอพ 3
- externals
- ห้องสมุด
- Lib 1
- Lib 2
- เครื่องมือ
- การประยุกต์ใช้งาน
เส้นทาง "แอปพลิเคชัน" มีแอปพลิเคชันหลักทั้งหมด สิ่งเหล่านี้ไม่ได้ขึ้นอยู่กับแต่ละอื่น ๆ แต่ขึ้นอยู่กับโครงการห้องสมุดและภายนอก
เส้นทาง "Externals" ประกอบด้วย DLLs ภายนอกบางตัวที่อ้างอิงใน Applications and Libraries ของเรา
เส้นทาง Libraries มี libs ที่ใช้กันทั่วไป (เทมเพลต UI, คลาส Helper และอื่น ๆ ) พวกเขาไม่ได้พึ่งพาซึ่งกันและกันและพวกเขาจะถูกอ้างอิงในโครงการห้องสมุดและเครื่องมือ
เส้นทางเครื่องมือประกอบด้วยโปรแกรมตัวช่วยบางอย่างเช่นตัวช่วยตั้งค่าอัปเดตบริการทางเว็บ ฯลฯ
ตอนนี้มีประเด็นสำคัญอยู่ว่าทำไมฉันถึงต้องการเปลี่ยนแปลงโครงสร้างนี้:
- เราไม่สามารถใช้การสร้างเซิร์ฟเวอร์
- มันไม่สะดวกในการจัดการการจัดการการต่อสู้ TFS ด้วย sprints, impediments ฯลฯ ด้วยโครงสร้างโซลูชันเช่นนั้น
- นักพัฒนาทุกคนสามารถเข้าถึงโครงการทั้งหมดในโซลูชันได้เสมอ
- งานสร้างที่สมบูรณ์นั้นใช้เวลานานเกินไปหากมีคนพบ [F6] ใน Visual Studio โดยไม่ตั้งใจ ...
คุณจะเปลี่ยนแปลงอะไรในโซลูชันนี้ คุณจะแบ่งโครงการเหล่านั้นเป็นโซลูชั่นที่มีขนาดเล็กลงได้อย่างไร
แนวทางแรกของฉันคือการสร้างโครงการ TFS หนึ่งโครงการสำหรับแต่ละแอพพลิเคชันห้องสมุดและเครื่องมือ แต่ฉันจะมั่นใจได้อย่างไรเช่นแอปที่ 2 มี Lib 1 รุ่นใหม่ล่าสุดอยู่เสมอ? ฉันต้องตรวจสอบการเปลี่ยนแปลงใน Lib 1 และอัปเดตแอป 2 ด้วยตนเองทันทีที่การเปลี่ยนแปลง Lib หรือไม่ หรือฉันสามารถบังคับให้ Visual Studio ใช้โครงการภายนอกรุ่นใหม่ล่าสุดได้หรือไม่
แก้ไข:บน TFS มีเพียงหนึ่งคอลเล็กชันโครงการ TFS ทีมซึ่งมีหนึ่งโครงการทีม TFS โครงการทีมประกอบด้วยโซลูชัน Visual Studio ขนาดใหญ่หนึ่งรายการซึ่งมีหลายโฟลเดอร์ที่มี (ดูโครงสร้างด้านบน) โดยแต่ละโครงการมีโครงการ VS หลายโครงการ
คำถามของฉันคือตอนนี้คุณจะจัดระเบียบใหม่ได้อย่างไร:
- โครงการทีม TFS
- โครงการ VS