อะไรคือจุดแข็งและจุดอ่อนของ Git, Mercurial และ Bazaar? [ปิด]


137

คนที่นี่เห็นว่าอะไรเป็นจุดแข็งและจุดอ่อนของ Git, Mercurial และ Bazaar

ในการพิจารณาแต่ละข้อด้วยกันและต่อต้านระบบควบคุมเวอร์ชันเช่น SVN และ Perforce ควรพิจารณาประเด็นใดบ้าง

ในการวางแผนการโอนย้ายจาก SVN ไปยังหนึ่งในระบบควบคุมเวอร์ชันกระจายเหล่านี้คุณจะพิจารณาปัจจัยใดบ้าง


1
สำหรับการเปรียบเทียบเฉพาะของ Windows ระหว่าง Mercurial และ Git ดูคำถามนี้: stackoverflow.com/questions/2550091/ …
— alexandrul

BTW ฉันต้องการดูเปอร์เซ็นต์การใช้งานระบบ DVCS ที่แตกต่างกัน
— sergiol

คำตอบ:


145

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

Bazaar นั้นเร็วพอสมควร (เร็วมากสำหรับต้นไม้ที่มีประวัติตื้นเขิน แต่ปัจจุบันมีขนาดไม่ดีกับความยาวประวัติ) และง่ายต่อการเรียนรู้สำหรับผู้ที่คุ้นเคยกับอินเตอร์เฟสบรรทัดคำสั่งของ SCM แบบดั้งเดิม (CVS, SVN และอื่น ๆ ) Win32 ถือเป็นเป้าหมายชั้นหนึ่งโดยทีมพัฒนา มันมีสถาปัตยกรรมแบบเสียบได้สำหรับส่วนประกอบที่แตกต่างกันและแทนที่รูปแบบการจัดเก็บของมันบ่อยครั้ง; สิ่งนี้ทำให้พวกเขาสามารถแนะนำคุณสมบัติใหม่ (เช่นการสนับสนุนที่ดีขึ้นสำหรับการรวมกับระบบควบคุมการแก้ไขตามแนวคิดต่าง ๆ ) และปรับปรุงประสิทธิภาพ ทีมบาซ่าร์พิจารณาการติดตามไดเรกทอรีและเปลี่ยนชื่อรองรับฟังก์ชั่นชั้นหนึ่ง ในขณะที่ตัวระบุการตรวจทานแก้ไขรหัสที่ไม่ซ้ำกันทั่วโลกนั้นมีให้สำหรับการแก้ไขทั้งหมด, การ revnos ต้นไม้ท้องถิ่น (หมายเลขการแก้ไขมาตรฐาน, คล้ายกับที่ใช้โดย svn หรือ SCM แบบอื่น ๆ ที่มากกว่า) ใช้แทนแฮชเนื้อหาเพื่อระบุการแก้ไข Bazaar มีการรองรับ "การจ่ายเงินเบา" ซึ่งจะถูกเก็บไว้ในเซิร์ฟเวอร์ระยะไกลแทนการคัดลอกลงในระบบท้องถิ่นและถูกเรียกโดยอัตโนมัติผ่านเครือข่ายเมื่อจำเป็น; ในปัจจุบันสิ่งนี้มีความพิเศษในหมู่ DSCM

ทั้งสองมีรูปแบบการรวม SVN บางส่วน อย่างไรก็ตาม bzr-svn นั้นมีความสามารถมากกว่า git-svn อย่างมากเนื่องจากการปรับปรุงรูปแบบแบ็กเอนด์ที่นำมาใช้เพื่อจุดประสงค์นั้น [อัพเดต, ณ ปี 2014: ผลิตภัณฑ์เชิงพาณิชย์ของบุคคลที่สาม SubGit ให้อินเตอร์เฟซแบบสองทิศทางระหว่าง SVN และ Git ซึ่งเทียบเคียงได้กับ bzr-svn และมีความเที่ยงตรงมากกว่า; ฉันขอแนะนำให้ใช้มากกว่า git-svn เมื่อข้อ จำกัด ด้านงบประมาณและใบอนุญาตอนุญาต]

ฉันไม่ได้ใช้ Mercurial อย่างกว้างขวางและดังนั้นจึงไม่สามารถให้ความเห็นในรายละเอียดได้ - ยกเว้นที่จะต้องทราบว่าเช่น Git มีการแฮชเนื้อหาเพื่อแก้ไข เช่นเดียวกับ Git มันไม่ถือว่าไดเรกทอรีเป็นวัตถุชั้นหนึ่ง (และไม่สามารถจัดเก็บไดเรกทอรีว่าง) อย่างไรก็ตามมันเร็วกว่า DSCM อื่น ๆ ยกเว้น Git และมีการรวม IDE ที่ดีกว่า (โดยเฉพาะกับ Eclipse) กว่าคู่แข่งใด ๆ ด้วยคุณสมบัติด้านประสิทธิภาพ (ซึ่งล่าช้าเพียงเล็กน้อยด้านหลังของ Git) และการสนับสนุนข้ามแพลตฟอร์มและ IDE ที่เหนือกว่า Mercurial อาจจะน่าสนใจสำหรับทีมที่มีสมาชิกจำนวน 32 คนที่มุ่งเน้น win32-centric หรือ IDE-bound

ข้อกังวลอย่างหนึ่งในการย้ายจาก SVN คือส่วนหน้า GUI ของ SVN และการรวม IDE นั้นมีความเป็นผู้ใหญ่มากกว่า SCM แบบกระจาย นอกจากนี้หากคุณใช้งานสคริปต์อัตโนมัติแบบ precommit จำนวนมากกับ SVN (เช่นการทดสอบหน่วยที่จะผ่านก่อนที่การกระทำสามารถดำเนินการต่อได้) คุณอาจต้องการใช้เครื่องมือที่คล้ายกับPQMสำหรับการรวมคำขออัตโนมัติไปยังสาขาที่แบ่งปันของคุณ

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

[เกี่ยวกับผู้แต่ง: ฉันใช้ Git และ Perforce สำหรับงานและ Bazaar สำหรับโครงการส่วนตัวของฉันและเป็นห้องสมุดฝังตัว ส่วนอื่น ๆ ขององค์กรนายจ้างของฉันใช้ Mercurial อย่างหนัก ก่อนหน้านี้ฉันสร้างระบบอัตโนมัติรอบ SVN ขึ้นมามากมาย ก่อนหน้านั้นฉันมีประสบการณ์กับ GNU Arch, BitKeeper, CVS และอื่น ๆ ในตอนแรก Git ค่อนข้างจะวางตัว - มันให้ความรู้สึกเหมือน GNU Arch ซึ่งเป็นสภาพแวดล้อมที่มีแนวคิดหนักเมื่อเทียบกับชุดเครื่องมือที่สร้างขึ้นเพื่อให้สอดคล้องกับตัวเลือกเวิร์กโฟลว์ของผู้ใช้ - แต่ฉันรู้สึกสบายใจ มัน].


Heya ฉันแค่อยากให้คุณรู้ว่า cscvs ยังคงถูกใช้เพื่อเรียกใช้การนำเข้ารหัส Launchpad และฉันได้เปิดตัวรุ่น Canonical เมื่อฉันทำงานที่นั่น
— ddaa

19

สตีฟ Streeting ของโครงการยักษ์ 3 มิติเพียง (2009/09/28) การเผยแพร่รายการบล็อกเกี่ยวกับหัวข้อนี้ที่เขาทำดีและแม้กระทั่งมือเปรียบเทียบ Git, Mercurial และบาซาร์

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

ข้อความแสดงแทน

มันสั้นอ่านและฉันขอแนะนำอย่างยิ่ง


@gavenkoa, bazaar นั้นใช้งานง่ายสำหรับคนที่มาจาก SVN หากคุณมาจากคอมไพล์คุณก็มีโมเดลจิตที่ใกล้ชิดกับการวางตลาดของบาซ่า แต่ไกลมากจากอินเทอร์เฟซของมัน (... การมีสิ่งที่เป็นนามธรรมที่หนาเช่นกันระหว่างส่วนล่างและส่วนต่อประสานเป็นสิ่งที่ทำให้ bzr เป็นมิตรกับคนที่คุ้นเคยกับรุ่น SVN)
— Charles Duffy

2
@CharlesDuffy Mercurial ยังมีชื่อที่เข้าใจง่ายสำหรับคำสั่งและไม่ตาย (การพัฒนา Bazaar ถูกหยุดเมื่อ 2 ปีที่แล้วและ Canonical ปฏิเสธมัน, ใช่Git + gitub ชนะเกม DVCS ) ฉันไม่เคยเข้าใจโครงสร้างการตั้งชื่อคอมไพล์ดังนั้นจึงชอบ HG มันยากเกินไปที่จะต่อสู้กับพวกคนรัก Git ((
— gavenkoa

@gavenkoa ชื่อคำสั่งหลักของ bzr ตรงกับ SVN ดังนั้นอีกครั้งฉันไม่เห็นสิ่งที่อาจใช้งานง่ายเกี่ยวกับพวกเขา (สำหรับผู้ใช้ SVN) ใช่แน่นอนการพัฒนาก็ตายแล้ว ฉันไม่ได้โต้เถียงว่า bzr นั้นมีประโยชน์สำหรับการใช้งาน - เฉพาะที่การวิพากษ์วิจารณ์เฉพาะที่ทำขึ้นนั้นไม่ใช่ฐาน
— Charles Duffy

1
@gavenkoa ... ฉันยังได้รับทราบเพื่อปกป้องด้านของ BitKeeper แม้จะมีความเสียใจที่ค่อนข้างใหญ่กับนักพัฒนาซอฟต์แวร์ของการ / เจ้าของ (พื้นฐานเอกสารสาธารณะ ... แม้ว่าแลร์รี่ไม่โทรหาฉันขึ้นครั้งเดียวที่จะอธิบายในตอนท้ายของพวกเขาในสิ่งที่ เกิดขึ้นและฉันจะให้ตอนนี้ฉันเข้าใจทั้งสองด้าน) เพียงเพราะฉันปกป้อง SCM ไม่ได้หมายความว่าฉันแนะนำให้คนอื่นใช้ :)
— Charles Duffy

15

คนที่นี่เห็นว่าอะไรเป็นจุดแข็งและจุดอ่อนของ Git, Mercurial และ Bazaar

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

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

ข้อเสียอย่างหนึ่งของมันคือการที่ MS Windows รองรับการล้าหลังและไม่เต็ม ข้อเสียที่รับรู้อีกอย่างหนึ่งก็คือมันไม่ได้บันทึกไว้อย่างดีเช่น Mercurial และมีผู้ใช้น้อยกว่าคู่แข่ง แต่มันเปลี่ยนแปลง

ในความเห็นของฉันความแข็งแกร่งของMercurial นั้นอยู่ในประสิทธิภาพที่ดีและมีพื้นที่เก็บข้อมูลขนาดเล็กในการรองรับ MS Windows ที่ดี

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

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

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

Git เขียนใน C, เชลล์สคริปต์และ Perl, และสามารถเขียนได้ Mercurial เขียนด้วย C (core, for performance) และ Python และจัดทำ API สำหรับส่วนขยาย Bazaar เขียนด้วย Python และให้บริการ API สำหรับส่วนขยาย


ในการพิจารณาแต่ละข้อด้วยกันและต่อต้านระบบควบคุมเวอร์ชันเช่น SVN และ Perforce ควรพิจารณาประเด็นใดบ้าง

ระบบควบคุมเวอร์ชันเช่น Subversion (SVN), Perforce หรือ ClearCase เป็นระบบควบคุมเวอร์ชันรวมศูนย์ Git, Mercurial, Bazaar (และ Darcs, Monotone และ BitKeeper) เป็นระบบควบคุมเวอร์ชันที่แจกจ่าย ระบบควบคุมเวอร์ชันแบบกระจายช่วยให้มีเวิร์กโฟลว์ที่หลากหลายมากขึ้น อนุญาตให้ใช้ "เผยแพร่เมื่อพร้อม" พวกเขามีการสนับสนุนที่ดีกว่าสำหรับการแยกและการรวมและสำหรับเวิร์กโฟลว์ที่มีสาขามาก คุณไม่จำเป็นต้องเชื่อใจผู้คนด้วยการให้สิทธิ์ในการเข้าถึงเพื่อรับการสนับสนุนจากพวกเขาในวิธีที่ง่าย


ในการวางแผนการโอนย้ายจาก SVN ไปยังหนึ่งในระบบควบคุมเวอร์ชันกระจายเหล่านี้คุณจะพิจารณาปัจจัยใดบ้าง

ปัจจัยหนึ่งที่คุณอาจต้องการพิจารณาคือการสนับสนุนสำหรับการใช้ SVN แบบไม่ใช้งาน Git มี git-svn, Bazaar มี bzr-svn และ Mercurial มีส่วนขยาย hgsubversion

ข้อจำกัดความรับผิดชอบ:ฉันเป็นผู้ใช้ Git และผู้มีเวลาน้อยและดู (และมีส่วนร่วมใน) รายชื่อผู้รับจดหมาย git ฉันรู้ Mercurial และ Bazaar จากเอกสารประกอบการอภิปรายต่างๆเกี่ยวกับ IRC และรายชื่อผู้รับจดหมายและโพสต์บล็อกและบทความเปรียบเทียบระบบควบคุมเวอร์ชันต่าง ๆ (บางส่วนอยู่ในหน้าGitComparisonบน Git Wiki)


FYI - bzr-svn นั้นมีความสามารถมากกว่า git-svn ซึ่งมันเป็นแบบสองทิศทาง: ฉันสามารถเรียกใช้ "bzr branch svn: // ... " และหลังจากนั้นผสานการเปลี่ยนแปลงของฉันกลับไปที่เซิร์ฟเวอร์ svn - ที่ที่พวกเขา จะถูกเก็บไว้กับเมตาดาต้าลูกค้า bzr อื่น ๆ จะรับรู้
— ชาร์ลส์ดัฟฟี่

2
ฉันเป็นนักพัฒนา hg และฉันมองดูการออกแบบ Git มาบ้างแล้ว ฉันดีใจที่ได้เห็นพวกเขาทั้งสองรักษาประวัติด้วยวิธีที่สมเหตุสมผลเพียงอย่างเดียวสำหรับการตั้งค่าแบบกระจาย: ในระดับสูงพวกเขามีทั้งกราฟของการกระทำและในระดับที่ต่ำกว่าพวกเขาทั้งสองให้คอมมิชชันอ้างอิงที่ไฟล์อ้างอิง ) Mercurial มีสาขาที่ไม่ระบุตัวตน (ซึ่ง AFAIK ไม่มีอยู่ใน Git) มันมีบุ๊กมาร์กกิ่งก้านสาขา (คล้ายกับกิ่ง Git แต่ไม่มีการกด / ดึง) และมีชื่อสาขา (ชื่อสาขาถูกบันทึกด้วยคอมมิท ใน Git)
— Martin Geisler

14

InfoQ มีการเปรียบเทียบที่ดี


คำตอบนี้จะได้รับการปรับปรุงโดยสรุปการเปรียบเทียบดังกล่าว
— lindes

7

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

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


10
Mercurial เทียบได้กับ Git ประสิทธิภาพไม่แตกต่างกันมาก แต่ตลาดสดช้ากว่า Mercurial และ Git
— Joshua Partogi

@jpartogi - ตัวเลขประสิทธิภาพของ Bazaar ได้รับการปรับปรุงให้เร็วกว่าคู่แข่งอย่างมากดังนั้นฉันจึงต้องระมัดระวังในการยืนยันประเภทนั้น - โดยเฉพาะอย่างยิ่งกับการปรับโครงสร้างสตอเรจที่มีอยู่ในตัวอย่างในรุ่นปัจจุบันและกำหนดเป็นค่าเริ่มต้นใน 2.0
— ชาร์ลส์ดัฟฟี่

6

ลองดูที่การเปรียบเทียบที่ทำเมื่อเร็ว ๆ นี้โดยนักพัฒนาหลาม: http://wiki.python.org/moin/DvcsComparison พวกเขาเลือก Mercurial ด้วยเหตุผลสำคัญสามประการ:

ตัวเลือกที่จะไปกับ Mercurial นั้นถูกสร้างขึ้นด้วยเหตุผลสำคัญสามประการ:

  • จากการสำรวจขนาดเล็กผู้พัฒนา Python สนใจที่จะใช้ Mercurial มากกว่าใน Bazaar หรือ Git
  • Mercurial เขียนด้วย Python ซึ่งสอดคล้องกับแนวโน้มของ python-dev ที่จะ 'กิน dogfood ของตัวเอง'
  • Mercurial เร็วกว่า bzr อย่างมาก (ช้ากว่า git แม้ว่าจะแตกต่างกันเล็กน้อย)
  • Mercurial ง่ายต่อการเรียนรู้สำหรับผู้ใช้ SVN มากกว่า Bazaar

(จากhttp://www.python.org/dev/peps/pep-0374/ )


1
Mozilla และ Sun ยังใช้ Mercurial ด้วยเหตุผลเดียวกัน
— โจชัว Partogi

2
bzr เขียนด้วยภาษา Python ซึ่งช้ากว่า hg จริง ๆ แต่ด้วยการลดอัตรากำไรที่ลดลงอย่างรวดเร็วและในฐานะผู้ใช้ทั้ง Bazaar และ Mercurial ฉัน / เห็นด้วยอย่างยิ่ง / ไม่เห็นด้วยกับการยืนยันที่ง่ายขึ้น
— ชาร์ลส์ดัฟฟี่

1
พวกเขาทั้งหมดยังคงพัฒนา ฉันตัดสินใจที่ Bazaar เพื่อให้ DCVS เริ่มต้นด้วยเพราะฉันคิดว่ามันง่ายที่สุด (แต่ไม่มากในนั้น) และ Launchpad.net มันค่อนข้างช้า Git บน OSX ดูดี แต่การสนับสนุน Windows แย่ เนื่องจาก Python และโครงการ Google ได้นำมาใช้ในขณะนี้และเนื่องจาก TortoiseHg ฉันจึงเปลี่ยนเป็น Mercurial ฉันคิดว่า Mercurial กำลังดึงดูดมวลชนที่มีความสำคัญเหนือบาซ่าและจะอยู่ที่นั่น และ Git จะทำสิ่งของตัวเองเพ่งความสนใจไปที่ Posix เสมอดังนั้นจะไม่ถูกครอบงำอย่างแท้จริง
— Nick

5

Sun ทำการประเมินgit , MercurialและBazaarเป็นผู้สมัครเพื่อแทนที่ Sun Teamware VCS สำหรับฐานรหัส Solaris ฉันพบว่ามันน่าสนใจมาก


3
การประเมินเหล่านั้นค่อนข้างล้าสมัยเวอร์ชั่นใหม่มีการเปลี่ยนแปลงข้อเสียที่ระบุไว้ที่นั่น
— hayalci

2

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


สิ่งนี้หายไปจากการออกแบบ - ไม่สามารถเพิ่ม cp ได้โดยไม่ต้องสร้างหลายกรณีที่ยากหรือเป็นไปไม่ได้ที่จะแน่ใจว่าทำสิ่งที่ถูกต้องในการผสานระหว่างสาขาที่มีการคัดลอกและการเปลี่ยนแปลงเกิดขึ้นและสาขาอื่นที่ไม่มีการเปลี่ยนแปลง .
— Charles Duffy

แน่นอน แต่มันเป็นสิ่งที่ต้องระวัง - และมันจะเป็นคุณสมบัติที่มีประโยชน์มากสำหรับกรณีการใช้งานหลายอย่าง (เช่นการแบ่งไฟล์ในสองแบบที่แตกต่างกันและรักษาประวัติของทั้งคู่) จริงๆแล้วมันเป็นเหตุผลเดียวที่ฉันยังคงใช้การโค่นล้มสำหรับโครงการบางอย่าง - ที่ผสานเป็นที่ไม่เกี่ยวข้อง แต่สำเนาไม่ได้
— Davide

2

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

ปัจจุบันฉันใช้ Git ซึ่งฉันชอบมากตั้งแต่รุ่น 1.6 ทำให้มันคล้ายกับ VCS อื่น ๆ ในแง่ของคำสั่งที่จะใช้

ฉันคิดว่าความแตกต่างที่สำคัญสำหรับประสบการณ์การใช้ DVCS ของฉันคือ:

  1. Git มีชุมชนที่มีชีวิตชีวาที่สุดและเป็นเรื่องปกติที่จะเห็นบทความเกี่ยวกับ Git
  2. GitHubโขดหินจริงๆ Launchpad.net ก็โอเค แต่ไม่มีอะไรที่เหมือนกับความพอใจของ Github
  3. จำนวนเครื่องมือเวิร์กโฟลว์สำหรับ Git นั้นยอดเยี่ยมมาก มันรวมกันทุกที่ มีบางอย่างสำหรับ Bzr แต่ไม่มากหรือบำรุงรักษาเกือบดี

โดยสรุป Bzr นั้นยอดเยี่ยมเมื่อฉันตัดฟันของฉันบน DVCS แต่ตอนนี้ฉันมีความสุขมากกับ Git และ Github


คุณหมายถึง "ตอนนี้" มีความสุขมากเมื่อเทียบกับ "ไม่" มีความสุขมากใช่มั้ย
— Charles Duffy

ขอบคุณชาร์ลส์! บิตสลิปฟรอยด์มี :)
— sh1mmer

1

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

คุณอาจได้รับคำตอบที่ดีกว่านี้หากคุณสามารถวิเคราะห์เครื่องมือเหล่านี้ได้จนถึงจุดที่คุณมีคำถามเพิ่มเติม


ดังนั้นบางทีคำถามเมตา: คำถามที่ควรถามและปัจจัยที่ต้องพิจารณาคืออะไร?
— Jordan Dea-Mattson

1

Bazaar นั้นง่ายต่อการเรียนรู้มากกว่า git Git ได้รับการสนับสนุนที่ดีใน github.com

ฉันคิดว่าคุณควรลองใช้ทั้งคู่และตัดสินใจว่าแบบไหนที่เหมาะกับคุณที่สุด


1
Mercurial นั้นง่ายเหมือนบาซ่าค่อนข้างเร็วเมื่อเทียบกับคอมไพล์และได้รับการสนับสนุนอย่างดีจาก Bitbucket แล้วคุณจะถามอะไรอีก
— 46432 Joshua Partogi

1

คนที่นี่เห็นว่าอะไรเป็นจุดแข็งและจุดอ่อนของ Git, Mercurial และ Bazaar

นี่เป็นคำถามที่เปิดกว้างมากติดกับ flamebait

Git เร็วที่สุด แต่ทั้งสามนั้นเร็วพอ บาซ่าร์มีความยืดหยุ่นมากที่สุด (มีการสนับสนุนการอ่าน - เขียนแบบโปร่งใสสำหรับที่เก็บ SVN) และใส่ใจกับประสบการณ์ของผู้ใช้เป็นอย่างมาก Mercurial อยู่ตรงกลาง

ทั้งสามระบบมีแฟนบอยจำนวนมาก ฉันเป็นแฟนบอยของ Bazaar

ในการพิจารณาแต่ละข้อด้วยกันและต่อต้านระบบควบคุมเวอร์ชันเช่น SVN และ Perforce ควรพิจารณาประเด็นใดบ้าง

อดีตเป็นระบบกระจาย หลังเป็นระบบรวมศูนย์ นอกจากนี้อย่างเลี่ยงไม่พ้นเป็นกรรมสิทธิ์ในขณะที่คนอื่น ๆ ทั้งหมดได้ฟรีในขณะที่คำพูด

การรวมศูนย์กับการกระจายอำนาจเป็นทางเลือกที่สำคัญยิ่งกว่าระบบใด ๆ ที่คุณกล่าวถึงในหมวดหมู่

ในการวางแผนการโอนย้ายจาก SVN ไปยังหนึ่งในระบบควบคุมเวอร์ชันกระจายเหล่านี้คุณจะพิจารณาปัจจัยใดบ้าง

ขั้นแรกให้ขาดการทดแทนที่ดีสำหรับ TortoiseSVN แม้ว่า Bazaar กำลังทำงานกับเต่าของพวกเขาแต่มันยังไม่มีในเดือนกันยายน 2008

จากนั้นการฝึกอบรมบุคคลสำคัญเกี่ยวกับวิธีการใช้ระบบการกระจายอำนาจจะส่งผลกระทบต่อการทำงานของพวกเขา

ในที่สุดการรวมเข้ากับส่วนที่เหลือของระบบเช่นตัวติดตามปัญหาระบบสร้างตอนกลางคืนระบบทดสอบอัตโนมัติ ฯลฯ


1
สำหรับเร็กคอร์ดสถานะหน้าปัจจุบัน: "ตั้งแต่ Bazaar เวอร์ชัน 1.6, TortoiseBZR รวมอยู่ในตัวติดตั้งอย่างเป็นทางการ" ดังนั้นจึงดูเหมือนว่าจะครบกำหนดแล้ว
— PhiLho

1

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


1

ddaa.myopenid.com พูดถึงมันผ่าน แต่ฉันคิดว่ามันควรค่าแก่การพูดถึงอีกครั้ง: Bazaar สามารถอ่านและเขียนไปยังที่เก็บข้อมูล SVN ระยะไกลได้ นั่นหมายความว่าคุณสามารถใช้ Bazaar ในพื้นที่เป็นหลักฐานพิสูจน์แนวคิดในขณะที่คนอื่น ๆ ในทีมยังคงใช้การโค่นล้ม

แก้ไข: สวยมากทุกเครื่องมือในขณะนี้มีบางส่วนวิธีการมีปฏิสัมพันธ์กับ SVN แต่ตอนนี้ผมมีประสบการณ์ส่วนตัวที่git svnทำงานมากดี ฉันใช้มันมาหลายเดือนโดยมีอาการสะอึกน้อยที่สุด


git ยังมีส่วนต่อประสานไปยัง svn แต่ฉันยังไม่ได้มีโอกาสใช้อย่างถูกต้อง - utsl.gen.nz/talks/git-svn/intro.html
— Cebjyre

1

มีวิดีโอที่ดีโดย Linus Torvalds บนคอมไพล์ เขาเป็นผู้สร้าง Git ดังนั้นนี่คือสิ่งที่เขาโปรโมต แต่ในวิดีโอเขาอธิบายว่า SCM แบบกระจายคืออะไรและทำไมพวกเขาถึงดีกว่าแบบรวมศูนย์ มีการเปรียบเทียบ git (Mercurial ถือว่าโอเค) และ cvs / svn / perforce นอกจากนี้ยังมีคำถามจากผู้ชมเกี่ยวกับการย้ายถิ่นไปยัง SCM แบบกระจาย

ฉันพบว่าวัสดุนี้ให้ความกระจ่างและฉันถูกขายให้กับ SCM แบบกระจาย แต่ความพยายามของฉันก็คือไลนัส เหตุผลก็คือ bitbucket.org ฉันคิดว่ามันดีขึ้น (ใจกว้างมากขึ้น) แล้วค่อย gitHub

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

http://www.youtube.com/watch?v=4XpnKHJAok8


0

ระบบควบคุมเวอร์ชันแจกจ่าย (DVCSs) แก้ปัญหาที่แตกต่างจาก VCS ส่วนกลาง การเปรียบเทียบมันเปรียบได้กับการเปรียบเทียบค้อนกับไขควง

ส่วนกลาง VCSระบบได้รับการออกแบบด้วยความตั้งใจที่ว่ามีหนึ่งแหล่งที่มาของทรูที่มีความสุขและดังนั้นจึงดี นักพัฒนาซอฟต์แวร์ทั้งหมดทำงาน (ชำระเงิน) จากแหล่งข้อมูลนั้นแล้วเพิ่ม (กระทำ) การเปลี่ยนแปลงของพวกเขาซึ่งกลายเป็นพรในทำนองเดียวกัน ข้อแตกต่างที่แท้จริงระหว่าง CVS, การโค่นล้ม, ClearCase, Perforce, VisualSourceSafe และ CVCSes อื่น ๆ ทั้งหมดอยู่ในเวิร์กโฟลว์ประสิทธิภาพและการรวมที่แต่ละผลิตภัณฑ์มี

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

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


มีความแตกต่างอย่างมีนัยสำคัญระหว่าง CVS, SVN และ VisualSourceSafe (เพื่อชื่อ แต่ 3) ที่มีผลกระทบร้ายแรงต่อยูทิลิตี้ของพวกเขา - และสิ่งเหล่านี้ไม่ได้เป็นเพียงปัญหาเวิร์กโฟลว์และ / หรือการรวม
— Murph

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