กรณีศึกษาทางธุรกิจสำหรับระบบควบคุมรุ่นที่กระจายอำนาจ


26

ฉันค้นหาและไม่สามารถหาเหตุผลทางธุรกิจใด ๆ ได้ว่าทำไมระบบ git / mercurial / bazzr จึงดีกว่าระบบรวมศูนย์ (การโค่นล้มการบังคับใช้)

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

ฉันจะขว้างคอมไพล์ให้กับผู้จัดการของฉันในไม่ช้ามันจะใช้เวลาสักครู่ในการแปลงคลังเก็บโค่นล้มและค่าใช้จ่ายในการซื้อใบอนุญาต smartgit

แก้ไขฉันพยายามทำให้คำถามนี้เป็นการสนทนาทั่วไปเกี่ยวกับการรวมศูนย์และการกระจายอำนาจ แต่ก็หลีกเลี่ยงไม่ได้ที่จะกลายเป็นการโค่นล้มของ Git vs แน่นอนว่ามีระบบรวมศูนย์ที่ดีกว่าการโค่นล้ม


1
เราอยู่ในตำแหน่งที่คล้ายกันที่มองกรณีและจะต้องมีการกล่าวว่าฉันไม่เชื่อว่ามีหนึ่งในปัจจุบัน
Jon Hopkins

สามารถgit-svnตอบสนองความต้องการของคุณ?
JBRWilkinson

@JBRWilkinson ฉันเพิ่งใช้ git-svn เพื่อย้ายที่เก็บจำนวนมากเพื่อคอมไพล์ บริษัท ไม่ได้ลงทุนมากในเครื่องมือที่ทำงานร่วมกับ svn ดังนั้นจึงไม่เป็นปัญหามากนัก
Keyo

อ้างอิงการแก้ไข - คุณยังไม่ได้อธิบายว่าทำไม SVN ถึงล้มเหลวในแบบที่คุณรู้สึกว่าคุณต้องการการทดแทน คำตอบของฉัน (ตัวอย่าง) ไม่เกี่ยวกับ git vs svn เกี่ยวกับการค้นหากรณีศึกษาทางธุรกิจเพื่อเปลี่ยนสถานะที่เป็นอยู่
Murph

คำตอบ:


23

อืมฉันเป็นผู้จัดการฉันมีปฏิกิริยาตอบโต้ "เข่ากระตุก" สองอย่างนี้:

  • หากคุณยังไม่มีเหตุผลที่ดีทำไมคุณขว้างคอมไพล์อื่นที่ไม่ใช่อินเทรนด์?
  • ในทำนองเดียวกันการโค่นล้มล้มเหลวเช่นนั้นคุณต้องการการทดแทนอย่างไร

จริง ๆ แล้วฉันไม่ได้เป็นเชิงลบ - ฉันคิดว่าอาจมีกรณีที่ต้องทำ (ขึ้นอยู่กับสถานการณ์) แต่ถ้ากรณีเป็นเพียงว่าคอมไพล์นั้น "ดีกว่า" กว่าการโค่นล้มแล้วคุณไม่มีจริงๆ

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

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

อาจเป็นได้ว่าสิ่งที่คุณต้องการทำคือเรียกใช้คอมไพล์ในเครื่องของคุณในฐานะไคลเอนต์การโค่นล้ม "ดีกว่า" (ฉันกำลังมองหาที่จะทำโดยใช้ Mercurial)

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


FWIW ฉันรู้ว่าสามารถกำหนดอินสแตนซ์เฉพาะของที่เก็บได้อย่างง่ายดายให้เป็น trunk / แหล่งอ้างอิงและยิ่งไปกว่านั้นนั่นคือการเชื่อมต่อหนึ่งไปยังเซิร์ฟเวอร์การสร้างของตัวเอง - ความแตกต่างที่เกิดขึ้นกับ DVCS สิ่งที่มีอยู่ในสถาปัตยกรรม


1
การจัดการกับข้อกังวลเกี่ยวกับการอนุญาต / ความยืดหยุ่น: คุณยังต้องการพื้นที่เก็บข้อมูล "ซอร์ส" ด้วยเช่นกันซึ่งคุณสามารถกำหนดสิทธิ์ตามปกติได้ การรวมอย่างต่อเนื่องทำงานสำหรับแหล่งเก็บข้อมูลนักพัฒนาโคลนที่เก็บแหล่งที่มา ฯลฯ ... การสำรองข้อมูลของมันมีความสำคัญน้อยกว่าเพราะทุกคนมีโคลนไม่ได้เป็นเพียงการชำระเงิน
Matthieu M.

1
จุดเกี่ยวกับการโคลนเต็มรูปแบบการสำรองข้อมูลจะทำดี ฉันจะยอมรับได้อย่างอิสระว่ามีบางส่วนของเรื่องนี้ฉันไม่เข้าใจดีพอเพราะ "งาน" ของฉันเป็นสิ่งที่ svn และ mercurial ของฉันเป็นเรื่องส่วนตัวและในขณะที่ค่อนข้าง จำกัด
Murph

14

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


2
ในสภาพแวดล้อมทางธุรกิจ 'เซิร์ฟเวอร์ส่วนกลาง' จะมีความซ้ำซ้อนสำรองข้อมูลและผู้ดูแลระบบที่รับผิดชอบในการรักษา (และเซิร์ฟเวอร์อื่นทั้งหมด) ให้มีชีวิตอยู่
JBRWilkinson

2
ในสภาพแวดล้อมทางธุรกิจขนาดใหญ่คุณจะมีความซ้ำซ้อนของเซิร์ฟเวอร์ ในธุรกิจขนาดเล็กความซ้ำซ้อนของเซิร์ฟเวอร์ดังกล่าวไม่แน่นอน
Michael Shaw

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

1
@ ช่างก่ออิฐ: แต่นั่นก็เป็นข้อสันนิษฐาน: 'ตราบใดที่ devs ทั้งหมด ... "เพราะใน บริษัท ขนาดเล็กที่มีโครงการขนาดเล็กแม้แต่โครงการอาจมีชีวิตอยู่และถูกใช้อย่างมีความสุขโดยไม่มีใครเข้ารหัสไว้เป็นเวลาหนึ่งปีหรือ สอง
Inca

และฉันจะไม่ประมาทคุณค่าของประวัติการกระทำความผิด ในระบบขนาดใหญ่มันมีค่าจริงๆที่จะดูว่าใครและทำไมทำอะไรกับรหัส
Tamás Szelei

8

ฉันคิดว่าคุณสามารถสร้างเคสสำหรับการควบคุมเวอร์ชันที่เพิ่มประสิทธิภาพการทำงาน (และทำให้ได้ผลกำไร) แม้ว่านักพัฒนาจะทำงานคนเดียว

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


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

5
จากนั้นคุณจะอยู่ในนรกรวมเมื่อคุณผลักดันการเปลี่ยนแปลงในที่สุด นี่คือสิ่งที่ไม่ดีไม่ใช่สิ่งที่ดี
Henry

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

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

2
คุณไม่สามารถทำสิ่งเหล่านี้ด้วย (a) สาขา SVN หรือ (b) สำเนาการทำงานหลายชุดได้หรือไม่
JBRWilkinson

4
  • สาขาต่อข้อผิดพลาด
  • เวลาแฝงที่ลดลงใน diffs ของคุณ
  • ความสามารถในการมากได้อย่างรวดเร็วไปโดยพลการผ่านประวัติศาสตร์ของสาขาเมื่อคุณกำลังตรวจสอบเพียร์
  • คุณยังสามารถเข้าถึงประวัติทั้งหมดของคุณเมื่อคุณไม่สามารถเข้าถึงเซิร์ฟเวอร์ส่วนกลาง: คุณไม่ได้อยู่ในสำนักงานพลังงานเพิ่งออกไป แต่แบตเตอรี่แล็ปท็อปของคุณยังคงทำงาน ...

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


3

ยกโทษให้ฉันสำหรับการเชื่อมโยงไปยังบล็อกของฉันเอง แต่ฉันได้เขียนบทความเกี่ยวกับเรื่องนี้มาก:

คุณสามารถลงคะแนนถ้าคุณไม่พบพวกเขาที่เกี่ยวข้อง

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


บล็อกของคุณเขียนได้ดี ฉันยังไม่ได้อ่านทั้งหมด ฉันสงสัยว่าทำไมคุณถึงเลือก Bzr เมื่อ Git และ Hg ดูจะโด่งดังมากขึ้น คนดูเหมือนจะเกลียด Bzr เพราะช้า ฉันยังเป็นแฟนของ Git เพราะต้นไม้แฮชแทนที่จะเป็นตัวเลขการแก้ไขซึ่งดูเหมือนจะปลอดภัยสำหรับฉัน ตัวเลขหมุนรอบ bzr จะไม่ถูกรบกวนทั้งหมดเมื่อมีการรวมสาขาหรือไม่
Keyo

2
@Keyo ฉันเลือก bzr เพราะฉันต้องสอน DVCS ให้กับตัวเองและ bzr เป็นมิตรกับมือใหม่มากที่สุด ฉันได้เปลี่ยนเป็นคอมไพล์สำหรับความเร็วคุณลักษณะและเสถียรภาพตั้งแต่นั้นมา Bazaar ยังแฮชแก้ไขและมีตัวระบุที่ไม่ซ้ำกันทั่วโลกพวกเขาก็ไม่ได้เป็นค่าเริ่มต้นให้กับผู้ใช้ ตัวเลขการแก้ไขของพวกเขาเป็นจริงไม่แตกต่างจากการใช้HEAD~1, HEAD~2ฯลฯ ในคอมไพล์ มันยากมากที่คุณต้องการแฮชจริง แต่มันเป็นสิ่งแรกที่คุณเรียนรู้ด้วยคอมไพล์และมักจะอยู่ในหน้าของคุณ การซ่อนจากผู้ใช้เว้นแต่คุณต้องการจริงๆเหตุผลหนึ่งคือ bzr นั้นเป็นมือใหม่มากกว่า
Karl Bielefeldt

ขอขอบคุณสำหรับการชี้แจง. Git ไม่ใช่เรื่องง่ายเลยสำหรับฉันที่มาจากการโค่นล้ม คำสั่งจำนวนมากมีคำเดียวกัน แต่ทำสิ่งต่าง ๆ
Keyo

2

ข้อโต้แย้งของฉันสำหรับ DVCS คือ:

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

  • การย้ายไปสู่ระบบที่ทันสมัยดึงดูดนักพัฒนาที่ทันสมัยซึ่งจะนำไปสู่วัฒนธรรมของผลิตภัณฑ์ที่ดีกว่าซึ่งจะช่วยให้ธุรกิจขายสินค้ามากขึ้น

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

โดยพื้นฐานแล้วมันเกี่ยวกับการลดแรงเสียดทาน มีระยะนี้คือMuda ยิ่งมีแรงเสียดทานมากเท่าไหร่ความเจ็บปวดก็ยิ่งมากขึ้นเท่านั้น ความเจ็บปวดที่มากขึ้นการทำสำเร็จน้อยลงกำไรที่น้อยลง


2

ฉันขอโทษถ้าฉันอัฒจรรย์ แต่อนุญาตให้ฉันทำเรื่องธุรกิจโดยไม่มีเงื่อนไขที่ไม่แน่นอน:

SVN ทำให้ชีวิตของนักพัฒนาอนาถ และนั่นทำให้ธุรกิจซอฟต์แวร์อนาถ

... ในรูปแบบที่หลายคนไม่เข้าใจจนกว่าพวกเขาจะเริ่มใช้ DVCS นี้เป็นกรณีศึกษาทางธุรกิจที่สำคัญที่สุดที่อาจจะทำ ทำไม? ดีเมื่อเทียบกับค่าใช้จ่ายในการหาและรักษานักพัฒนาที่ดีค่าใช้จ่ายของการเปลี่ยนไปใช้ DVCS ที่เกือบจะไม่

พิจารณาสิ่งต่อไปนี้:

  • ทั้งหมดยกเว้นการดำเนินการเล็กน้อยที่สุดใน SVN (และ CVCS อื่น ๆ ส่วนใหญ่) จำเป็นต้องมีการเข้าถึงเครือข่าย ใน DVCSes ส่วนใหญ่การเข้าถึงเครือข่ายจะเกิดขึ้นเฉพาะเมื่อคุณทำpushหรือpullดำเนินการ ซึ่งหมายความว่าคำสั่งที่ไม่น่ารำคาญเป็นช้า คุณจะทำอย่างไรเมื่อคำสั่งดำเนินไปตลอดกาล? ฉันไปหา programmers.se หรือแฮ็กเกอร์ส่วนตัวเป็นการส่วนตัวในขณะที่ฉันกำลังรอ ใส่เพียงDVCSes ช่วยให้การเขียนโปรแกรมเพื่อมุ่งเน้นในการทำในสิ่งที่พวกเขารักการเขียนซอฟแวร์ของ
  • SVN มีการสนับสนุนการแตกแขนงในลักษณะเดียวกับที่เรือนจำสนับสนุนให้หยดสบู่ในห้องอาบน้ำ: คุณสามารถทำได้ แต่เมื่อคุณได้รับระยำ ดังนั้นSVN กองกำลังพัฒนาของคุณที่จะต่อสู้อย่างต่อเนื่องมากกว่ากันจะทำให้การเปลี่ยนแปลง
  • เมื่อ SVN หยุดทำงานก็ลง มันยากมากสำหรับนักพัฒนาในการทำงานถ้าพวกเขาสามารถทำได้ ดังนั้นSVN บังคับให้นักพัฒนาของคุณจะพึ่งพาโครงสร้างพื้นฐานของคุณเป็นข้อผิดพลาดฟรี
  • ทุกวันนี้คอมไพล์ได้รับความสนใจอย่างรวดเร็วในขณะที่ SVN สูญเสียมันไปอย่างรวดเร็ว หากไม่มีประโยชน์ในการใช้ DVCS กับ SVN ทำไมชุมชนการเขียนโปรแกรมถึงเปลี่ยนเร็วที่สุด

จำนวนทั้งหมดนี้คืออะไร ฉันยังไม่ได้พบกับนักพัฒนาที่ได้รับ DVCS ลองอย่างซื่อสัตย์ที่ต้องการ SVN ในภายหลัง ถ้าฉันสามารถทำให้คำสั่งตัวหนาที่น่ารำคาญมากขึ้นSVN เป็น "ความชั่วร้ายที่จำเป็น" ที่ผู้พัฒนาบังคับให้ใช้ Git เป็นเครื่องมือที่ทำให้นักพัฒนามากขึ้นและมีความสุข

(ฉันควรชี้ให้เห็นว่าข้อความที่เป็นตัวหนาเป็นสิ่งที่คุณควรมุ่งเน้นไปที่ส่วนที่เหลือเป็นเพียงบริบท)


5
-1 - คุณอัฒจรรย์และในขณะที่มีความจริงบางอย่างในสิ่งที่คุณเขียนมันจะปั่นป่วนเพื่อลบล้าง FUD แทนที่จะวิเคราะห์ด้วยเหตุผล SVN ช้าหรือไม่ เฉพาะในกรณีที่พื้นที่เก็บข้อมูลมีขนาดใหญ่และเครือข่ายน้ำแข็ง SVN หยุดทำงานให้ฉันทำงานไม่ได้ใช่มั้ยจำไม่ได้เลยว่ามันไม่ทำงานและไม่ใช่เพราะคอมพิวเตอร์ของฉันไม่ได้ขึ้นอยู่กับพื้นที่เก็บข้อมูลเพื่อแก้ไข / คอมไพล์ / รันซอร์ส SVN แตกแขนงและรวมกันเป็นคนจนหรือไม่? ว้าวผู้คนมีความทรงจำสั้น ๆ ... ทำไม DVCS ถึงได้รับความสนใจ? ความผิดพลาดของฟังก์ชั่น - ซึ่งได้รับการปรับปรุง - และตรงไปตรงมากับแฟชั่น
Murph

1
@Murph - ชอบหรือไม่ผู้คนเกลียดการเปลี่ยนไปสู่จุดที่มีความวุ่นวาย ในการโน้มน้าวให้พวกเขาเปลี่ยนคุณต้องโน้มน้าวพวกเขาว่าสภาพที่เป็นอยู่นั้นขาด และมันก็หัก FUD จะไม่ดีก็ต่อเมื่อไม่มีเหตุผลที่จะต้องกลัวความไม่แน่นอนและความสงสัย สำหรับ mindshare ฉันเห็นด้วยกับคุณ แต่นั่นไม่ใช่ประเด็น มันเป็นหรือไม่คนที่ตัดสินใจเห็นด้วยกับมัน และผู้จัดการที่ฉันเคยพบทุกคนได้รับความเชื่อมั่นจากเรื่องนี้ (แม้ว่าพวกเขาเกลียดคอมไพล์)
Jason Baker

2
ฉันไม่จำเป็นต้องไม่เห็นด้วยกับคุณเจสันเพียงแค่บอกว่าคะแนนของคุณยังไม่ดีเท่าที่ควร โดยเฉพาะอย่างยิ่งฉันคิดว่าคุณกำลังพยายามทำเอฟเฟกต์และถ้าคุณถูกจับได้ว่าคุณมักจะเสียคะแนนสำหรับการโต้แย้งแม้ว่าคุณจะถูก (ยกเว้นจุดที่คุณผิดแน่นอน ... (
:)

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

1
@Henry - Programmers.se สำหรับคำถามและคำตอบแบบอัตนัย เรื่อง == เรื่องความคิดเห็นส่วนตัว
35490 Jason Jason Baker

1

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


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

@j_random_hacker: จุดประสงค์ของ VCS คือการติดตามการเปลี่ยนแปลงรหัส ยอมรับการเปลี่ยนแปลงโค้ดแทร็ก หากคุณไม่สามารถกระทำออฟไลน์ได้ฉันจะยืนยันว่า VCS ของคุณไม่ทำงานในขณะออฟไลน์
Daenyth

1

ความแตกต่างแสดงเมื่อมีปัญหา

เราเปลี่ยนเป็น git เมื่อ 6 เดือนที่แล้วหลังจากย้ายพื้นที่เก็บข้อมูลเก่าของทศวรรษ

จนถึงตอนนี้ฉันได้พบสิ่งต่อไปนี้หลังจากทำการทดลองเล็กน้อย:

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

  • แข็งแกร่งยิ่งขึ้นด้วยการออกแบบ - คุณไม่ต้องพึ่งพา 100% บนเซิร์ฟเวอร์กลางที่พร้อมใช้งานและหากไม่ใช่คุณสามารถใช้การโปรโมตโคลนใด ๆ เป็นการชั่วคราวเพื่อทดแทน สิ่งนี้จะลบจุดสำคัญของความล้มเหลว - หากเซิร์ฟเวอร์ SVN หยุดทำงานไม่ว่าด้วยเหตุผลใดก็ตามไม่มีใครสามารถทำงาน SVN ได้ หากที่เก็บส่วนกลาง git หยุดทำงานไม่ว่าจะด้วยเหตุผลใดก็ตามคุณยังคงสามารถทำงานและกด / ดึงโลคัลเพื่อให้แน่ใจว่ามีการจำลองการคอมมิท คุณสามารถมีที่เก็บนอกไซต์หลายแห่งเพื่อจุดประสงค์นี้

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

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

ดังนั้นฉันขอแนะนำให้สำหรับกรณีธุรกิจของคุณดูสิ่งที่คุณจะทำเมื่อเกิดภัยพิบัติ ...


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

0

ความง่ายในการแยกและรวมเป็นเหตุผลที่เป็นรูปธรรมมากที่สุด แต่การโน้มน้าวใจใครซักคนคุณจะต้องให้ตัวอย่างที่เป็นรูปธรรมถึงวิธีปรับปรุงสิ่งต่าง ๆ

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


-1

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

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