การจัดการเว็บแอปพลิเคชั่นหลายเวอร์ชันโดยใช้ Git


12

เรามีครอบครัวของแอพทั้งหมดมีฐานเดียวกัน จนถึงตอนนี้ฉันได้พัฒนาฐานนี้และเวิร์กโฟลว์ Git นั้นง่ายมาก:

  • การพัฒนาจะทำในdevelopสาขา
  • คุณสมบัติใหม่ได้รับการพัฒนาในname-of-the-featureสาขา
  • การเผยแพร่จะทำในrelease-**สาขา

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

ฉันไม่แน่ใจว่าฉันจะจัดการกับคอมไพล์ได้อย่างไรและแอพหลายตัวที่มีฐานเดียวกัน

  • แต่ละคนควรมีโครงการคอมไพล์ของตัวเองหรือไม่?
  • พวกเขาควรจะอยู่ในโครงการเดียวกัน แต่แต่ละคนในสาขาของตัวเอง ?

ประเด็นก็คือ: ถ้าฉันวางมันลงในโครงการที่แยกต่างหากการดัดแปลงทุกอย่างที่ทำในฐานของแอพจะต้องทำซ้ำกับฉันในแต่ละแอพ ฉันไม่คุ้นเคยกับgitมาก แต่ถ้าฉันเก็บแต่ละโครงการไว้ในสาขาคุณจะสามารถผสานการดัดแปลงพื้นฐานกับแต่ละแอพได้หรือไม่

มีใครเคยประสบสถานการณ์เช่นนี้บ้างไหม? ฉันไม่แน่ใจว่าจะดำเนินการต่อไปอย่างไร

ขอบคุณ!

แก้ไข เมื่อฉันพูดรุ่นฉันไม่ได้หมายความว่าเหมือนหมายเลขรุ่น จริงๆแล้วมันเป็นแอพที่แตกต่างกันที่ใช้ฐานเดียวกัน

คำตอบ:


7

ออกจากแอปพื้นฐานในที่เก็บของมันและสร้างโครงการใหม่ที่ขึ้นอยู่กับ jar ที่คุณรวบรวมจากที่เก็บนั้น

กิ่ง Git ไม่ได้มีไว้สำหรับหลายแอพ Git ต้องการให้คุณใช้ที่เก็บหนึ่งแห่งสำหรับแต่ละโครงการหรือตระกูลที่เกี่ยวข้องของโครงการ มีสาขาอยู่เพื่อให้คุณสามารถพัฒนาฟีเจอร์แยกได้ไม่ใช่เพื่อให้คุณสามารถสร้างโครงการใหม่ทั้งหมดโดยไม่ต้องออกจากที่เก็บ

คุณไม่ต้องการมีหลายแอพที่แชร์รหัสซึ่งเป็นฝันร้ายในการบำรุงรักษา หากคุณแนะนำให้คุณพัฒนาเป็นสาขาใน repo ส่วนกลางของคุณคุณจะมีการรวมกันจำนวนมากเพื่อเผยแพร่การเปลี่ยนแปลงของแต่ละแอพ มันง่ายกว่ามากในการพึ่งพาไลบรารี่ที่แยกจากกันและใช้Apache Mavenเพื่อดึงการพึ่งพาของโปรเจ็กต์


รหัสส่วนใหญ่ที่ใช้ร่วมกันคือรหัส GWT (มุมมองบริการ ฯลฯ ) เป็นไปได้หรือไม่ที่จะแยกไปยังไลบรารี jar? หรือเป็นไปได้ที่จะใช้รหัส java ฝั่งเซิร์ฟเวอร์?
João Daniel

สามารถแยกอิลิเมนต์มุมมองได้ แต่อาจไม่สามารถใช้ jar ได้ ตัวอย่างเช่นจาวาสคริปต์สามารถแยกจากทุกหน้าเป็นไฟล์เดียวที่สามารถรวมอยู่ในแต่ละโครงการ รหัสทั่วไปของ JSP ควรถูกแยกลงในแท็ก JSP คุณอาจไม่จำเป็นต้องดึงทั้งหน้า แต่ฉันไม่รู้จักโครงการของคุณดังนั้นฉันอาจผิด
Michael K

สิ่งที่คุณคิดของวิธีการนี้: stackoverflow.com/a/2540471/2615737 ? มันสมเหตุสมผล ...
Francisco Corrales Morales

ฉันไม่คิดว่ามันเป็นกรณีใช้งานเดียวกัน คำตอบนั้นเกี่ยวข้องกับแอพเดียวกันสองเวอร์ชันที่แตกต่างกันเล็กน้อยในขณะที่คำถามนี้เกี่ยวกับสิ่งที่ฉันเห็นว่าเป็นแอปพลิเคชันที่แตกต่างกันโดยสิ้นเชิง ฉันยังคงไม่ต้องการให้สาขาเลยแม้แต่ในกรณี "แตกต่างกันเล็กน้อย"; อย่างไรก็ตามมันเป็นเรื่องยากที่จะแยกการทำงานออกจากกันเพื่อแยกไลบรารีใน Android หากมีมุมมอง xml ที่เกี่ยวข้อง ดูเหมือนว่าผู้ตอบไม่คิดว่ามันคุ้มค่ากับปัญหาสำหรับสถานการณ์ของเขา
Michael K

6

หากแอปจะไม่แก้ไขฐานตัวเองให้พิจารณาปล่อยฐานไว้ในที่เก็บของตัวเอง แล้วสร้างพื้นที่เก็บข้อมูลใหม่สำหรับแต่ละแอปของแต่ละบุคคลและเพิ่มฐานเป็นsubmodule คอมไพล์

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