วิธีการรวมระบบควบคุมเวอร์ชันต่างๆหรือเลือกอย่างใดอย่างหนึ่งเหนือกว่าเนื่องจากการควบรวมกิจการ


11

บริษัท ซื้อ บริษัท อื่นที่ใช้ระบบควบคุมเวอร์ชันต่างกัน

มีภูมิปัญญาร่วมกันเกี่ยวกับวิธีการรวมระบบดังกล่าวเข้าด้วยกันตัวอย่างเช่นการใช้สะพาน Subverson-GIT หรือแม้กระทั่งการตัดสินใจใช้เพียงเครื่องมือเดียวเหนืออีกเครื่องหนึ่ง - และวิธีการโยกย้ายระหว่างระบบหรือไม่?

คนใช้ชุดของเกณฑ์สำหรับการตัดสินใจเช่นการทดสอบ "Joel" ที่เทียบเท่ากับการพัฒนาซอฟต์แวร์หรือไม่?

คำตอบ:


11

หากต้องการตอบคำถามการย้ายข้อมูลจากประสบการณ์ส่วนตัวของการย้ายข้อมูลหลายครั้ง:

อย่ากลัวที่จะใส่ซอฟต์แวร์เวอร์ชันปัจจุบันลงในระบบควบคุมแหล่งใหม่เป็นพื้นฐานและทำงานจากที่นั่น

เวลาส่วนใหญ่ที่คุณไม่ต้องการมีประวัติ ซึ่งหมายความว่าเป็นภารกิจที่ต้องดำเนินการระหว่างการรวมและสิ่งที่ผิดพลาดน้อยลง

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

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


+1 fair point ย้ายเฉพาะสิ่งที่คุณต้องการปล่อยรุ่นเก่าไว้ในที่เก็บข้อมูลเก่าก่อนหน้า อย่าโอนย้ายเพื่อเห็นแก่ตัวเอง วิธีนี้เป็นวิธีที่หลากหลายในการเลือกระหว่างการจัดระเบียบและการค้นหา หากการค้นหาสามารถให้สิ่งที่คุณต้องการได้อย่างรวดเร็วทุกครั้งก็ไม่จำเป็นต้องจัดระเบียบสิ่งที่คุณค้นหา
therobyouknow

1
+1 IMO กลยุทธ์ที่ดีที่สุด ใช้เพียงอันเดียวต่อไปคนอื่น ๆ ในโหมดอ่านอย่างเดียวในกรณี
281377

1
+1: คำตอบที่แม่นยำยิ่งขึ้นในส่วนของการย้ายข้อมูล
VonC

1
+1 - ยากพอที่จะเข้าใจรหัสที่มีอยู่ในสามเวอร์ชันล่าสุด
JeffO

1
เราแปลงที่เก็บ CVS จำนวนมากเป็น SVN โดยใช้สคริปต์ cvs2svn ที่ยอดเยี่ยมซึ่งทำงานได้ดีจริงๆ ฉันไม่เคยนึกถึงใครก็ตามที่ค้นหาประวัตินอกเหนือจาก 'การเปลี่ยนแปลงล่าสุด' ดังนั้นนี่จึงไม่คุ้มค่ากับพื้นที่ใช้งานจริง ถ้าฉันทำมันอีกครั้งฉันจะแท็ก repo CVS เช็คอิน SVN ให้เป็นใหม่แล้วทำเครื่องหมาย repo CVS เป็นแบบอ่านอย่างเดียว
JBRWilkinson

4

ในด้านการจัดการนั้นส่วนใหญ่เป็นคำถามของ:

  • การสนับสนุน : บริษัท จะปล่อย VCS ยังคงอยู่ในกรณีที่เกิดปัญหาหรือไม่
    เป็นหนึ่งในเหตุผลหลักที่ทำให้ผลิตภัณฑ์ล้าสมัยเช่น ClearCase ยังคงได้รับการพิจารณา (ClearCase อยู่ตั้งแต่ปี 2003 และ ... ผลิตภัณฑ์IBM )
  • ต้นทุนใบอนุญาต : แม้ว่าจะมีทางเลือกฟรีแวร์บางครั้ง "สิทธิ์ใช้งานแบบกลุ่ม" สำหรับ VCS สามารถต่อรองได้หรือรวมอยู่ในสัญญาที่มีขนาดใหญ่กว่าเช่นเซิร์ฟเวอร์เครือข่ายการสนับสนุน ฯลฯ ... ใบอนุญาตระดับโลกสำหรับผลิตภัณฑ์ประเภทนี้อาจสิ้นสุด ค่าใช้จ่ายมากน้อยกว่าราคาสาธารณะ

ในด้านโครงการมันเป็นคำถามของ:

  • การบริหารระบบ : คุณจะติดตั้ง VCS บนเซิร์ฟเวอร์ใด (หรือหลาย VCS หากเรากำลังพูดถึง Git, SVN และอื่น ๆ ) นโยบายการสำรองข้อมูลคืออะไร DRP ใด (แผนกู้คืนความเสียหาย)
  • การสนับสนุนในท้องถิ่น : ใครจะเป็นผู้สนับสนุนระดับ 1? ระดับ 2?
  • ความรู้ด้านตลาด : คุณแน่ใจหรือไม่ว่าจะมีนักพัฒนาและ / หรือผู้ดูแลระบบที่เพียงพอด้วยชุดความรู้ที่ถูกต้องเพื่อใช้ประโยชน์จาก VCS นี้และคุณสมบัติทั้งหมดของมัน

ฟรีแวร์หรือไม่จำซอฟต์แวร์ "ฟรี" ฟรีใน "คำพูดฟรี" (คุณมีอิสระที่จะเลือกและปรับใช้สิ่งที่คุณต้องการ) ไม่เหมือนใน "เบียร์ฟรี" (มันจะยังคงมีค่าใช้จ่ายจำนวนมากในเซิร์ฟเวอร์ การสำรองข้อมูลการจัดการการสนับสนุน ... )

เกณฑ์ดังกล่าวข้างต้นเป็นการเริ่มต้นที่จะพิจารณาว่า VCS ใดที่จะต้องรักษาสิ่งที่ควรละทิ้ง
แต่ในกรณีหลังคุณต้องพิจารณา:

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

+1 คำตอบที่ดีสัญลักษณ์แสดงหัวข้อเกณฑ์ที่ฉันกำลังมองหาและคำอธิบายของคุณที่มีต่อพวกเขาก็ช่วยด้วย ฉันจะให้โอกาสผู้อื่นก่อนยอมรับคำตอบ ขอบคุณ
therobyouknow

1

คุณต้องการรวมระบบที่แตกต่างกันจริงๆหรือไม่? ในทีมของเราแต่ละโครงการอาศัยอยู่ในพื้นที่เก็บข้อมูลของตนเองและประวัติของพวกเขาจึงเป็นอิสระ เราไม่มีปัญหาในการทำงานกับบางโครงการภายใต้การโค่นล้มและโครงการอื่นภายใต้ Mercurial แม้ว่าจะมีการพึ่งพาระหว่างกัน

หากคุณเลือกที่จะโยกย้ายจาก VCS หนึ่งไปยังอีกดูที่เครื่องมือการแปลงที่มีอยู่ จากประสบการณ์ของฉันไม่มีเหตุผลทางเทคนิคที่จะทิ้งประวัติของโครงการ

แก้ไข

ฉันคิดว่าฉันเข้าใจบางสิ่งบางอย่างซึ่งเป็นนัยในคำถามและคำตอบอื่น ๆ มันเป็นความจริงที่ VCS ใช้เพื่อจัดการการพึ่งพา ฉันรู้ว่ามันค่อนข้างทั่วไปในการใช้คุณสมบัติ VCS ต้องการsvn:externalsรวม repo หนึ่ง (การพึ่งพา) กับอีก

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


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

PS +1 โชคดีนะ barjak ที่อยู่ในองค์กรที่ทนต่อสภาพแวดล้อมการคำนวณที่หลากหลาย
therobyouknow

0

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


+1 ความสมจริงที่นี่ ผู้คนต้องกดประสาทให้กล้าหาญและดำเนินการต่อไป ความเสี่ยงจะต้องมีการกำหนดไว้อย่างดี การเรียนรู้อย่างหนึ่งที่ฉันเห็นและได้ยินคนอื่นพูดในที่ทำงานของฉันคือบางครั้งเราไม่ทำงานหนักพอที่จะลดความไม่แน่นอน / กำหนดความเสี่ยง / ภาระผูกพันอย่างชัดเจนก่อนที่เราจะเข้าร่วม ดูเหมือนว่ามีเวลาอีกมากสำหรับการทำซ้ำผิด / แก้ไข แต่ไม่มีเวลาเพียงพอที่จะทำให้ถูกต้องในครั้งแรก การแก้ไขปัญหาจะได้รับรางวัลและถูกมองว่าเป็นกิจกรรมที่ดำเนินอยู่แม้ว่าบางครั้งพวกเขาจะไม่จำเป็นก็ตาม
therobyouknow

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