การใช้การโค่นล้มเป็นที่เก็บสิ่งประดิษฐ์เทียบกับเครื่องมือการจัดการสิ่งประดิษฐ์เฉพาะ


19

TL: DR: ทำไมจึงต้องใช้Apache ArchivaหรือSonatype Nexusเป็นแหล่งเก็บข้อมูลสิ่งประดิษฐ์แทนการโค่นล้ม?

ระบบการสร้างที่ฉันใช้ในปัจจุบันมีจำนวนมากของ blobs ไบนารี (รูปภาพไฟล์เสียงไบนารีที่คอมไพล์แล้ว) ทั้งเป็นอินพุตและเอาต์พุตไปยังบิลด์ของเรา ระบบของเราสำหรับการจัดการสิ่งเหล่านี้เป็นสิ่งที่พิเศษมาก บางอันถูกตรวจสอบในที่เก็บโค่นล้มของเราพร้อมกับรหัสของเราบางอันถูกเก็บไว้ที่อื่นนอกการควบคุมเวอร์ชันทางการ

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

Google บอกฉันว่ามีคลังเก็บวัตถุให้เลือกมากมาย ( Archiva , Nexus , Artifactory , …) แต่จากการอ่านไปรอบ ๆ ฉันไม่เห็นประโยชน์ใด ๆ จากการใช้ Subversion สิ่งนี้จะช่วยดูแลไบนารีของเรา - มันได้ทำไปแล้วสำหรับไบนารีบางตัวของเราเราแค่ต้องการจัดเรียงเลย์เอาต์ใหม่เพื่อแยกพวกมันออกจากโค้ด - และมีข้อได้เปรียบที่โดดเด่นที่เรามีเซิร์ฟเวอร์โค่นล้มและความเชี่ยวชาญ

ดังนั้น. อะไรคือข้อดีของการใช้ระบบจัดการสิ่งประดิษฐ์เฉพาะโดยใช้เครื่องมือควบคุมเวอร์ชันทั่วไปเช่นการโค่นล้ม?


ประโยชน์ที่ใหญ่ที่สุดของการใช้เครื่องมือเฉพาะคือเครื่องมืออื่น ๆรู้วิธีจัดการกับมัน ! พวกเขาสามารถใส่สิ่งประดิษฐ์ไว้ในเครื่องมือเหล่านั้นและพวกเขาสามารถนำกลับออกมาในแบบอัตโนมัติ
Joachim Sauer

คำตอบ:


13

คำตอบสั้น ๆ : โดยทั่วไปคุณไม่ต้องการประวัติของสิ่งประดิษฐ์ไบนารีและการเปลี่ยนแปลงสิ่งประดิษฐ์เหล่านั้นคุณเพียงแค่ต้องการรุ่นที่เฉพาะเจาะจง

คำตอบที่ยาวกว่า: ทุกครั้งที่คุณส่งการเปลี่ยนแปลงเล็กน้อยไปยังไฟล์ไบนารีระบบควบคุมเวอร์ชันไม่มีวิธีใดในการสร้างเดลต้าซึ่งแตกต่างกันระหว่างสองไฟล์ - ดังนั้นมันจึงสร้างสำเนาใหม่ทั้งหมด

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

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

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

หลังคือสิ่งที่เสนอโดยที่เก็บสิ่งประดิษฐ์โดยทั่วไป

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


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

@me_and: คุณสามารถทำเช่นนั้นได้ แต่คุณต้องจัดการว่าการแก้ไขรุ่นใดให้รุ่นของสิ่งประดิษฐ์ เหตุใดจึงต้องให้ตัวคุณเองทำงานพิเศษเมื่อที่เก็บสิ่งประดิษฐ์สร้างขึ้นเพื่อคุณ มันเหมือนกับการพูดว่า "ดังนั้นฉันสามารถใช้ Notepad เพื่อเขียนรหัสของฉันได้ทำไมต้องรำคาญกับ Eclipse แล้ว" นอกจากนี้คุณจะไม่สามารถลบเวอร์ชันเก่าเพื่อประหยัดพื้นที่ได้อย่างแท้จริง คุณสามารถมีที่เก็บสิ่งประดิษฐ์
pdr

1
หากต้องการเน้นและขยายคำตอบโดย @pdr หากคุณต้องใช้ svn เป็นแหล่งเก็บข้อมูลส่วนไบนารีคุณอาจพบปัญหาการจัดเก็บเนื่องจาก svn ถูกออกแบบมาเพื่อไม่ลบข้อมูล ที่เดียวที่ฉันทำงานเราใช้ svn สำหรับการจัดเก็บสิ่งประดิษฐ์และเราเกินขีด จำกัด การจัดเก็บอย่างสม่ำเสมอเพราะมันเป็นเรื่องยาก (ไม่ใช่เป็นไปไม่ได้ แต่ยุ่งยากหากิน) เพื่อลบสิ่งประดิษฐ์เก่าที่ไม่ได้ใช้ออกจากร้าน เครื่องมือที่เก็บไบนารีดั้งเดิมเช่น Artifactory และ Nexus อนุญาตให้ลบสิ่งประดิษฐ์ที่ไม่จำเป็นออกไป
Matthew Skelton

3
การแก้ไข: การโค่นล้มใช้ไบนารีเดลต้าภายใน (และ AFAIK เฉพาะที่) ฉันทำการทดลองเมื่อหลายปีก่อนด้วยการจัดเก็บไฟล์ MS Office และมันก็มีประสิทธิภาพมาก ขนาดพื้นที่เก็บข้อมูลขยายตัวช้ามากแม้ในขณะที่เลื่อน PowerPoint PowerPoint 200 ครั้งอย่างหนัก แต่ประสิทธิภาพของอัลกอริทึมเดลต้าไบนารีจะแตกต่างกันอย่างมากตามประเภทไฟล์และฉันคิดว่าการขาดนโยบายการเก็บรักษาเป็นปัญหาจริงที่นี่ (สิ่งที่คุณสามารถแก้ไขได้ด้วยการถ่ายโอนข้อมูล / โหลดที่กรองแล้ว
Peter Becker

"ระบบควบคุมเวอร์ชันไม่มีวิธีใดในการสร้างเดลต้า" - ปัญหาคือพวกเขาทำอย่างนั้นตั้งแต่ปี 2006 ... subversion.apache.org/docs/release-notes/1.4.html#svndiff1 en.wikipedia org / wiki / Xdelta
RnR

1

เราใช้ SVN เป็นที่เก็บสำหรับการสร้างการวางจำหน่ายและทำได้ดีมาก เรามีที่เก็บรีลีสหนึ่งที่ดีกว่าบิวด์รีลีสต่าง ๆ กว่า 30gb และมันทำงานได้ดีในการดึงบิลด์ออกมาสำหรับการปรับใช้

ข้อดีของการทำเช่นนี้คือ ..

  • ไบนารีที่เพิ่มใน SVN จะถูกบีบอัดเกือบ 60-70 เปอร์เซ็นต์ในพื้นที่ประหยัดโดยเฉลี่ย
  • SVN ทำหน้าที่เป็นห้องสมุด (วัตถุ) สำหรับการเผยแพร่และพื้นที่เก็บข้อมูลได้รับการสำรองข้อมูลเพื่อวัตถุประสงค์ในการกู้คืนความเสียหาย
  • SVN ผ่านทาง https ช่วยให้สามารถส่งรหัสการปล่อยอย่างปลอดภัยไปยัง DMZ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.