วิธีการจัดโครงสร้างที่เก็บคอมไพล์สำหรับโครงการ?


9

ฉันกำลังทำงานกับโมดูลการซิงโครไนซ์เนื้อหาสำหรับ Drupal มีโมดูลเซิร์ฟเวอร์ซึ่งตั้งอยู่บนเว็บไซต์ ona และแสดงเนื้อหาผ่านบริการเว็บ นอกจากนี้ยังมีโมดูลไคลเอนต์ซึ่งตั้งอยู่บนเว็บไซต์ที่แตกต่างกันและดึงข้อมูลและนำเข้าเนื้อหาในช่วงเวลาปกติ

เซิร์ฟเวอร์ถูกสร้างใน Drupal 6 ไคลเอนต์ถูกสร้างขึ้นใน Drupal 7 จะต้องมีเซิร์ฟเวอร์รุ่น Druapl 7 และจากนั้นจะต้องใช้ Drupal 8 ทั้งไคลเอนต์และเซิร์ฟเวอร์เมื่อเปิดตัวในปีหน้า

ฉันค่อนข้างใหม่กับ git และ source control ดังนั้นฉันจึงสงสัยว่าวิธีที่ดีที่สุดในการตั้งค่าที่เก็บ git คืออะไร? มันจะเป็นกรณีของการมีพื้นที่เก็บข้อมูลแยกต่างหากสำหรับแต่ละตัวอย่างเช่น:

Drupal 6 server = 1 repository
Drupal 6 client = 1 repository
Drupal 7 server = 1 repository
Drupal 7 client = 1 repository
etc 

หรือมันจะเหมาะสมกว่าที่จะมีที่เก็บหนึ่งอันสำหรับเซิร์ฟเวอร์และอีกอันสำหรับลูกค้าจากนั้นสร้างกิ่งสำหรับแต่ละรุ่นของ Drupal?

ปัจจุบันฉันมีที่เก็บ 2 แห่ง - แห่งหนึ่งสำหรับลูกค้าและอีกแห่งสำหรับเซิร์ฟเวอร์

คำตอบ:


7

เว้นแต่โครงการจะมีขนาดใหญ่มากฉันจะไปที่เก็บเดียวที่มีไดเรกทอรีย่อยสำหรับเซิร์ฟเวอร์และไคลเอนต์และสร้างสาขาสำหรับแต่ละรุ่น คุณยังสามารถมีหลาย ๆ ที่เก็บในกรณีที่คุณต้องการเข้าถึงหลายรุ่นในเวลาเดียวกัน

ด้วยการบำรุงรักษาที่เก็บข้อมูลหลายแห่งคุณจะต้องทำการถ่ายโอนการเปลี่ยนแปลงที่ยากกว่าที่จำเป็น (การรีบูตจะง่ายกว่าการใช้แพตช์) ในกรณีที่ (ไม่น่าจะเป็นไปได้) จะไม่มีการเปลี่ยนแปลงที่นำไปใช้กับหลาย ๆ เวอร์ชันคุณยังคงสูญเสียอะไร ...

ยิ่งกว่านั้นคุณสามารถสลับไปยังที่เก็บหลายแห่งได้เสมอ: เพียงลอกแบบ repo และลบสาขาที่คุณไม่ต้องการ การไปทางอื่นนั้นยากกว่า

ฉันจะไป repos หลายครั้งเฉพาะในกรณีที่เซิร์ฟเวอร์และลูกค้าแบ่งปันอะไรหรือถ้ารหัสมีขนาดใหญ่จริงๆ


นี่คือวิธีที่ฉันจะไปเพราะ Drupal เก็บรุ่นต่าง ๆ ไว้เป็นกิ่ง ฉันก็ +1 เหมือนกัน แต่ต้องการ 15 ตัวแทน!
littledynamo

4

ฉันได้เห็นและทำงานกับรูปแบบดังกล่าว ทุกอย่างในโฟลเดอร์เดียวที่มีโฟลเดอร์ย่อยสำหรับเซิร์ฟเวอร์และไคลเอนต์หรือหนึ่ง repo ฉันชอบ repo เดียวสำหรับทุกส่วนหลักของโครงการ

ในกรณีที่มีการเปลี่ยนแปลงรุ่นใหญ่ฉันก็จะสร้าง repos ใหม่ด้วย แน่นอนว่าไม่มีสาขาที่แตกต่างสำหรับพวกเขา ในขณะที่สาขามีประสิทธิภาพสำหรับการใช้งานฟังก์ชั่นใหม่และอาจเป็นหนึ่งสาขาการติดตั้งถาวรฉันมักจะหลีกเลี่ยงการมีสาขามากเกินไปทำงานขนานกันเป็นเวลานาน คุณจะต้องเก็บรักษาไว้เสมอ (ทำการคืนเงินเมื่อสาขาหลักเปลี่ยนแปลง ฯลฯ ) ดังนั้นให้โครงสร้างพื้นฐานง่ายที่สุดเท่าที่จะทำได้ การมี repo เพิ่มเติมคือ (ในความเห็นต่ำต้อยของฉัน) เจ็บปวดน้อยกว่าการเล่นปาหี่ในรัฐต่าง ๆ โดยเฉพาะอย่างยิ่งถ้าลูกค้าและเซิร์ฟเวอร์ไม่แชร์รหัสมาก

ฉันไม่ค่อยรู้เรื่อง Drupal มากนักและความแตกต่างระหว่างรุ่นต่าง ๆ กันมากแค่ไหน ดังนั้นจุดของฉันที่จะชอบ repos ต่าง ๆ นั้นขึ้นกับประสบการณ์ของฉันกับ Rails ระหว่างรุ่นมีบางครั้งความแตกต่างใหญ่ในสิ่งต่าง ๆ เช่นวิธีการตั้งชื่อไฟล์หรือโครงสร้างโฟลเดอร์ (เช่นไปป์ไลน์สินทรัพย์) ซึ่งทำให้สะดวกสบายในการสร้าง repo ใหม่ Drupal (หรือกรอบอื่น ๆ ) อาจมีความแตกต่างน้อยลงจากนั้นก็โอเคที่จะไปใน repo ที่มีอยู่


1
ขอบคุณ มันน่าสนใจเพราะฉันเพิ่งค้นพบว่าโมดูล Drupal Core จัดเก็บรุ่นแยกเป็นสาขา ฉันคิดว่ามันสมเหตุสมผลสำหรับฉันที่จะเลียนแบบโครงสร้างนั้น ฉันต้องการ +1 แต่ต้องการ 15 ตัวแทน!
littledynamo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.