เปลี่ยนแปลงง่าย
| เปลี่ยนแปลงง่าย | |
|---|---|
| นักพัฒนา | โอลิเวีย แมคคอล[ a ] (เกษียณแล้ว), [ 1 ]ปิแอร์-อีฟ ดาวิด |
| ปล่อย | 19 เมษายน 2548 ( 2005-04-19 ) [ 2 ] |
| เวอร์ชันเสถียร | |
| เขียนเป็น | Python , CและRust [ 4 ] |
| ระบบปฏิบัติการ | ระบบปฏิบัติการคล้าย Unix , Windows , macOS |
| พิมพ์ | การควบคุมเวอร์ชัน |
| ใบอนุญาต | จีพีแอล-2.0 หรือเวอร์ชันที่ใหม่กว่า |
| เว็บไซต์ | www.mercurial-scm.org |
| ที่เก็บข้อมูล |
|
Mercurialเป็น เครื่องมือ ควบคุมเวอร์ชันแบบกระจายสำหรับนักพัฒนาซอฟต์แวร์รองรับการใช้งานบนMicrosoft Windows , Linuxและ ระบบปฏิบัติการ ที่คล้าย Unix อื่นๆ เช่นFreeBSDและmacOS
เป้าหมายการออกแบบหลักของ Mercurial ได้แก่ ประสิทธิภาพสูงและความสามารถในการปรับขนาด การกระจายอำนาจ การพัฒนาร่วมกันแบบกระจายอย่างเต็มรูปแบบ การจัดการไฟล์ข้อความธรรมดาและไฟล์ไบนารีอย่างมีประสิทธิภาพ และความสามารถในการแยกสาขาและการรวมขั้นสูง ในขณะที่ยังคงความเรียบง่ายในเชิงแนวคิด[ 5 ]นอกจากนี้ยังมีอินเทอร์เฟซเว็บแบบบูรณาการ Mercurial ยังได้ดำเนินการเพื่ออำนวยความสะดวกในการเปลี่ยนผ่านสำหรับผู้ใช้ระบบควบคุมเวอร์ชันอื่นๆ โดยเฉพาะSubversion Mercurial เป็น โปรแกรมที่ขับเคลื่อนด้วยบรรทัด คำสั่งเป็น หลัก แต่ มีส่วนขยาย อินเทอร์เฟซผู้ใช้แบบกราฟิกเช่นTortoiseHgและIDE หลายตัว รองรับการควบคุมเวอร์ชันด้วย Mercurial การดำเนินการทั้งหมดของ Mercurial จะถูกเรียกใช้เป็นอาร์กิวเมนต์ไปยังโปรแกรมไดรเวอร์hg(อ้างอิงถึง Hg ซึ่งเป็นสัญลักษณ์ทางเคมีของธาตุปรอท )
Olivia Mackall [ a ] เป็นผู้ริเริ่ม Mercurial และดำรงตำแหน่งนักพัฒนาหลักจนถึงปลายปี 2016 Mercurial ได้รับการเผยแพร่เป็นซอฟต์แวร์ฟรีภายใต้ใบอนุญาตGPL-2.0 หรือเวอร์ชันที่ใหม่กว่า[ 7 ]โดยส่วนใหญ่ใช้ภาษาการเขียนโปรแกรม Pythonแต่รวมถึง การใช้งาน การเปรียบเทียบ ไบนารี ที่เขียนด้วย ภาษา Cด้วย
ประวัติศาสตร์
Mackall ประกาศเปิดตัว Mercurial ครั้งแรกเมื่อวันที่ 19 เมษายน พ.ศ. 2548 [ 2 ]แรงผลักดันสำหรับเรื่องนี้คือการประกาศของBitmover ใน ช่วง ต้นเดือนนั้นว่าพวกเขาจะถอน BitKeeperเวอร์ชันฟรีออกเนื่องจากการพัฒนาSourcePuller
BitKeeper ถูกใช้เพื่อตอบสนอง ความต้องการ การควบคุมเวอร์ชันของ โครงการ เคอร์เนล Linux Mackall ตัดสินใจเขียนระบบควบคุมเวอร์ชันแบบกระจายเพื่อใช้ทดแทนเคอร์เนล Linux โครงการนี้เริ่มต้นขึ้นไม่กี่วันหลังจาก โครงการ Git ที่เป็นที่รู้จักกันดีในปัจจุบัน ซึ่งริเริ่มโดยLinus Torvaldsด้วยจุดประสงค์ที่คล้ายคลึงกัน[ 8 ]
โครงการพัฒนาเคอร์เนล Linux ตัดสินใจใช้Gitแทน Mercurial แต่ปัจจุบัน Mercurial ถูกนำไปใช้โดยโครงการอื่นๆ อีกมากมาย (ดูด้านล่าง )
โอลิเวีย แม็กคอลล์ ตอบคำถามในรายชื่อผู้รับจดหมายของ Mercurial โดยอธิบายถึงที่มาของชื่อ "Mercurial" ดังนี้:
ก่อนการเปิดตัวครั้งแรกไม่นาน ฉันได้อ่านบทความเกี่ยวกับปัญหา Bitkeeper ที่กำลังดำเนินอยู่ ซึ่งอธิบายว่าLarry McVoyเป็นคนมีนิสัยแปรปรวน (ในความหมายของ 'โลเล') เมื่อพิจารณาจากความหมายที่หลากหลาย ตัวย่อที่สะดวก และความเหมาะสมที่ดีกับรูปแบบการตั้งชื่อที่มีอยู่แล้วของฉัน (ดูที่อยู่อีเมลของฉัน) มันจึงลงตัวในทันที ดังนั้น Mercurial จึงได้รับการตั้งชื่อเพื่อเป็นเกียรติแก่ Larry ฉันไม่รู้ว่า Git จะเป็นเช่นเดียวกันหรือไม่[ 9 ] [ 10 ]
โครงการที่มีชื่อเสียงอย่างOpenJDKเคยใช้ Mercurial ในอดีต แม้ว่า OpenJDK จะไม่ใช้แล้วตั้งแต่ Java 16 [ 11 ]
ออกแบบ
Mercurial ใช้ แฮ ช SHA-1ในการระบุเวอร์ชัน สำหรับการเข้าถึงที่เก็บข้อมูลผ่านเครือข่าย Mercurial ใช้ โปรโตคอลแบบ HTTPซึ่งมุ่งลดจำนวนคำขอไป-กลับ การเชื่อมต่อใหม่ และข้อมูลที่ถ่ายโอน Mercurial ยังสามารถทำงานผ่านSSHได้ โดยโปรโตคอลจะคล้ายกับโปรโตคอลแบบ HTTP มาก โดยค่าเริ่มต้นจะใช้การผสานแบบ 3 ทางก่อนที่จะเรียกใช้เครื่องมือผสานภายนอก
การใช้งาน
ภาพที่ 1 แสดงการดำเนินการที่สำคัญที่สุดบางส่วนใน Mercurial และความสัมพันธ์ของการดำเนินการเหล่านั้นกับแนวคิดต่างๆ ของ Mercurial

การรับเลี้ยงบุตรบุญธรรม
แม้ว่า Mercurial จะไม่ได้รับการคัดเลือกให้จัดการซอร์สโค้ดเคอร์เนล Linux แต่ก็มีองค์กรหลายแห่งนำไปใช้ Facebook ใช้ภาษาโปรแกรม Rustในการเขียน Mononoke [ 12 ] [ 13 ]ซึ่งเป็นเซิร์ฟเวอร์ Mercurial ที่ออกแบบมาโดยเฉพาะเพื่อรองรับคลังเก็บข้อมูลหลายโครงการขนาดใหญ่
ในปี 2556 Facebook ได้นำ Mercurial มาใช้และเริ่มดำเนินการปรับขนาดเพื่อรองรับคลังโค้ดขนาดใหญ่แบบรวมศูนย์[ 14 ]
Google ยังใช้ไคลเอ็นต์ Mercurial เป็นส่วนหน้าบนแบ็กเอนด์ monorepo 'Piper' บนคลาวด์อีกด้วย[ 15 ]
Bitbucketประกาศว่าบริการควบคุมเวอร์ชันบนเว็บของตนจะยุติการสนับสนุน Mercurial ในเดือนมิถุนายน 2020 (จากนั้นขยายเวลาเป็นเดือนกรกฎาคม 2020) [ 16 ]โดยอธิบายว่า "มีโครงการใหม่น้อยกว่า 1% ที่ใช้ และแบบสำรวจนักพัฒนาระบุว่านักพัฒนา 90% ใช้ Git" [ 17 ]
Xenใช้ Mercurial เป็นเวลาหลายปี แต่เปลี่ยนมาใช้ Git ในปี 2013 [ 18 ]
Mozillaใช้ Mercurial มาหลายปี แต่เริ่มเปลี่ยนมาสนับสนุน Git แทน Mercurial ในปี 2023 [ 19 ]
เซิร์ฟเวอร์ Mercurial และการจัดการที่เก็บข้อมูล
- Heptapodคือ โปรเจกต์ที่แตกแขนง มาจาก GitLabสำหรับ Mercurial โดย Octobus
- Kallitheaซึ่งเป็นโปรแกรมที่พัฒนาต่อยอดมาจาก RhodeCode ภายใต้ลิขสิทธิ์ GPLv3
- PhabricatorโดยPhacility
- RhodeCodeโดยRhodeCode Inc.
การโฮสต์ซอร์สโค้ด
เว็บไซต์ต่อไปนี้ให้บริการโฮสติ้งซอร์สโค้ดฟรีสำหรับที่เก็บข้อมูล Mercurial:
- BitbucketโดยAtlassian (ปิดตัวลงเมื่อเดือนกรกฎาคม 2020) [ 17 ]
- โค้ดเบส[ 20 ]
- GNU SavannahโดยFSF
- เฮปตาพอด
- OSDN [ 21 ] (ดูเหมือนจะใช้งานไม่ได้ ณ เดือนธันวาคม 2024)
- เพอร์ฟอร์ซ[ 22 ]
- Puszcza [ 23 ] (ไซต์พี่น้องกับ GNU Savannah ซึ่งตั้งอยู่ในยูเครน)
- ซอร์สฟอร์จ
- ซอร์สฮัท
- TuxFamily [ 24 ]
เว็บไซต์ของ Mercurial กล่าวถึงโรงตีเหล็กอื่นๆ อีก บาง แห่ง
โครงการโอเพนซอร์สที่ใช้ Mercurial
บางโครงการที่ใช้ RCS แบบกระจายของ Mercurial: [ 25 ]