Mercurial
Στιγμιότυπο της οθόνης του Mercurial.
| |
Γενικά | |
---|---|
Ημερ. Δημιουργίας | 19 Απριλίου 2005 |
Είδος | κατανεμημένο σύστημα ελέγχου εκδόσεων, ελεύθερο λογισμικό, πρωτόκολλο επικοινωνίας |
Διανομή | |
Έκδοση | 6.8 (8 Ιουλίου 2024)[1] 6.8.1 (1 Αύγουστος 2024)[2][3] 6.8.2 (28 Οκτώβριος 2024)[4][2] |
Δοκιμαστική έκδοση | 6.4rc0 (2 Μάρτιος 2023)[5][6] |
Λειτουργικά | Ανεξάρτητο πλατφόρμας |
Ανάπτυξη | |
Υπευθ. ανάπτυξης | Matt Mackall,[7] Pierre-Yves David |
Γραμμένο σε | Python, C |
Άδεια χρήσης | GPLv2+ |
Σύνδεσμοι | |
Επίσημος ιστότοπος | |
https://www.mercurial-scm.org | |
Αποθετήριο κώδικα | |
https://repo.mercurial-scm.org/hg-stable |
Το Mercurial είναι ένα εργαλείο κατανεμημένου ελέγχου εκδόσεων (distributed revision control) για χρήση στον προγραμματισμό λογισμικού. Έχει υλοποιηθεί κυρίως στη γλώσσα προγραμματισμού Python αλλά περιλαμβάνει μια υλοποίηση του diff σε C. Υποστηρίζει τα Windows και τα συστήματα τύπου Unix, όπως το FreeBSD, το Mac OS X και το Linux. Το Mercurial είναι πρόγραμμα της γραμμής εντολών αλλά διατίθενται γραφικές επεκτάσεις. Όλες οι λειτουργίες του Mercurial καλούνται σαν παράμετροι στο βασικό πρόγραμμα hg, το όνομα του οποίου αποτελεί το σύμβολο στη χημεία του στοιχείου υδράργυρος (αγγλ. mercury).
Οι βασικοί σχεδιαστικοί στόχοι του Mercurial είναι η γρήγορη ταχύτητα και η δυνατότητα αυτή να κλιμακώνεται (scalability), η ανάπτυξη λογισμικού χωρίς κεντρικό σημείο και με δυνατότητες πλήρως κατανεμημένης συνεργασίας, σωστό χειρισμό απλού κειμένου και δυαδικών αρχείων, και προχωρημένες δυνατότητες δημιουργίας και συγχώνευσης κλάδων (branching/merging), ενώ ταυτόχρονα το σύστημα να παραμένει απλό.[8] Περιλαμβάνει διαδικτυακή διεπαφή και εργαλεία για τη διευκόλυνση της μετάβασης από συστήματα σε SVN.
Ο δημιουργός και βασικός προγραμματιστής του Mercurial είναι ο Matt Mackall. Το Mercurial διατίθεται σαν ελεύθερο λογισμικό υπό τους όρους της έκδοσης 2 της GNU GPL.
Τεχνικές λεπτομέρειες
[Επεξεργασία | επεξεργασία κώδικα]Το Mercurial χρησιμοποιεί κλειδιά κατακερματισμού SHA-1 για την ταυτοποίηση των εκδόσεων. Η πρόσβαση σε ένα αποθετήριο (repository) μέσω δικτύου γίνεται με ένα πρωτόκολλο βασισμένο στο HTTP που προσπαθεί να μειώσει τις αιτήσεις δύο κατευθύνσεων (reduce round-trip requests), τις νέες συνδέσεις και τα δεδομένα που μεταφέρονται. Το Mercurial μπορεί επίσης να χρησιμοποιηθεί πάνω από ssh, όπου το πρωτόκολλο μοιάζει με το πρωτόκολλο με βάση το HTTP. Χρησιμοποιεί εξορισμού συγχώνευση 3 κατευθύνσεων (3-way merge), πριν καλέσει εξωτερικά εργαλεία συγχώνευσης.
Ιστορία
[Επεξεργασία | επεξεργασία κώδικα]Ο Mackall ανακοίνωσε την πρώτη έκδοση του Mercurial στις 19 Απριλίου 2005.[9] Βασικός λόγος που οδήγησε στην ανακοίνωση ήταν η απόφαση της Bitmover, τον ίδιο μήνα, να σταματήσει τις δωρεάν εκδόσεις του BitKeeper.
Το BitKeeper χρησιμοποιούνταν για τη διαχείριση εκδόσεων στο εγχείρημα του πυρήνα Linux. Ο Mackall αποφάσισε να γράψει ένα σύστημα κατανεμημένου ελέγχου εκδόσεων, το οποίο θα το αντικαθιστούσε, για χρήση στην ανάπτυξη του πυρήνα. Το εγχείρημα ξεκίνησε μερικές ημέρες μετά το Git, που το άρχισε ο Λίνους Τόρβαλντς με παρόμοιους στόχους.[10]
Το εγχείρημα του πυρήνα Linux αποφάσισε να χρησιμοποιήσει το Git αντί του Mercurial, αλλά το Mercurial χρησιμοποιείται σήμερα από πολλά άλλα εγχειρήματα (δείτε παρακάτω, στην αντίστοιχη ενότητα).
Σχετικό λογισμικό
[Επεξεργασία | επεξεργασία κώδικα]- Κάποια γραφικά εργαλεία (GUI) για το Mercurial είναι:
- Hgk (tcl/tk)
- Επέκταση του Mercurial και μέρος της επίσημης έκδοσης. Εμφανίζει έναν κατευθυνόμενο ακυκλικό γράφο των αλλαγών (changesets) σε ένα αποθετήριο Mercurial. Το πρόγραμμα καλείται με την εντολή
hg view
(αν η επέκταση είναι ενεργοποιημένη). Το hgk βασίστηκε αρχικά σε ένα παρόμοιο εργαλείο για το Git, το gitk. Το hgk μπορεί να αντικατασταθεί από το hgview Αρχειοθετήθηκε 2012-04-05 στο Wayback Machine., το οποίο είναι γραμμένο σε καθαρή Python και μπορεί να ενσωματωθεί στα γραφικά περιβάλλοντα GTK και QT. - TortoiseHg
- Το TortoiseHg είναι επέκταση του κελύφους του λειτουργικού συστήματος, μαζί με κάποιες εφαρμογές, για το Mercurial. Υπάρχουν εκδόσεις για τους διαχειριστές αρχείων Windows Explorer και GNOME Nautilus.
- Murky Αρχειοθετήθηκε 2012-03-10 στο Wayback Machine.
- Γραφικό εργαλείο για το Mac OS X, γραμμένο σε Objective-C 2.0, εκτελείται σε Mac OS X 10.5 και μεταγενέστερα.
- MacMercurial
- Γραφικό εργαλείο για το Mac OS X, που δεν στοχεύει να αντικαταστήσει πλήρως τη χρήση του Mercurial από τη γραμμή εντολών, αλλά να διευκολύνει τις πιο συχνές λειτουργίες του Mercurial, για Mac OS X 10.4 και μεταγενέστερα.
- MacHg
- ελεύθερο και πολυνηματικό εργαλείο για Mac OS X 10.6 και μεταγενέστερα.
- SourceTree
- δωρεάν γραφικό εργαλείο για Mac OS X που συνεργάζεται με το Mercurial και με το Git.
- Εργαλεία για την συγχώνευση μεταξύ εκδόσεων (merging) είναι το (h)gct (Qt) και το Meld.
- Η επέκταση μετατροπής (convert) επιτρέπει την εισαγωγή δεδομένων από αποθετήρια τύπου CVS, Darcs, Git, GNU Arch, Monotone, Perforce, Bazaar και Subversion.
- Το Microsoft Visual Studio υποστηρίζει το Mercurial μέσω των πρόσθετων VisualHG Αρχειοθετήθηκε 2012-03-11 στο Wayback Machine. και HgSccPackage Αρχειοθετήθηκε 2020-07-03 στο Wayback Machine..
- Το NetBeans, από την έκδοση 6, υποστηρίζει το Mercurial.
- Το Eclipse υποστηρίζει το Mercurial με το πρόσθετο MercurialEclipse.
Χρήση από εγχειρήματα
[Επεξεργασία | επεξεργασία κώδικα]Φιλοξενία πηγαίου κώδικα
[Επεξεργασία | επεξεργασία κώδικα]Οι παρακάτω ιστοσελίδες παρέχουν δωρεάν φιλοξενία πηγαίου κώδικα σε Mercurial:
- Bitbucket
- CodePlex[11]
- Google Code[12]
- JavaForge
- Project Kenai, της Oracle
- SourceForge
- Assembla
- GNU Savannah
- Alioth, του Debian
- BerliOS
- Kiln
- Άλλες ιστοσελίδες, από το wiki του Mercurial
Εγχειρήματα που χρησιμοποιούν το Mercurial
[Επεξεργασία | επεξεργασία κώδικα]Κάποια εγχειρήματα που χρησιμοποιούν το Mercurial για τον κατανεμημένο έλεγχο εκδόσεων είναι τα εξής:[13]
Δείτε επίσης
[Επεξεργασία | επεξεργασία κώδικα]Παραπομπές
[Επεξεργασία | επεξεργασία κώδικα]- ↑ «relnotes: add 6.8». 8 Ιουλίου 2024. Ανακτήθηκε στις 13 Ιουλίου 2024.
- ↑ 2,0 2,1 «Release Notes».
- ↑ «Mercurial tag 6.8.1».
- ↑ «Mercurial tag 6.8.2».
- ↑ «changeset 50269:05de4896508e stable 6.4rc0».
- ↑ «Release Notes».
- ↑ «Versionsverwaltung: Matt Mackall zieht sich aus Mecurial-Entwicklung zurück».
- ↑ Matt Mackall (2006). «Towards a Better SCM: Revlog and Mercurial»]. Ottawa Linux Symposium Proceedings. http://selenic.com/mercurial/wiki/index.cgi/Presentations?action=AttachFile&do=get&target=ols-mercurial-paper.pdf.
- ↑ Mackall, Matt (2005-04-20). «Mercurial v0.1 - a minimal scalable distributed SCM». Linux kernel mailing list. Αρχειοθετήθηκε από το πρωτότυπο στις 2012-08-05. https://archive.today/20120805231410/http://www.ussg.iu.edu/hypermail/linux/kernel/0504.2/0670.html. Ανακτήθηκε στις 2012-03-17.
- ↑ Mackall, Matt (2005-04-29). «Re: Mercurial 0.4b vs git patchbomb benchmark». Linux kernel mailing list. Αρχειοθετήθηκε από το πρωτότυπο στις 2012-07-09. https://archive.today/20120709203437/http://lkml.indiana.edu/hypermail/linux/kernel/0504.3/1404.html. Ανακτήθηκε στις 2012-03-17.
- ↑ «CodePlex Weblog: CodePlex now supporting native Mercurial». 22 Ιανουαρίου 2010.
- ↑ «Google Code Blog: Mercurial Now Available to All Open Source Projects». 28 Μαΐου 2009. Αρχειοθετήθηκε από το πρωτότυπο στις 1 Δεκεμβρίου 2012. Ανακτήθηκε στις 17 Μαρτίου 2012.
- ↑ Some projects that use Mercurial
- ↑ «Source code repositories migrated from Subversion to Mercurial». 27 Φεβρουαρίου 2010. Αρχειοθετήθηκε από το πρωτότυπο στις 26 Ιουλίου 2012. Ανακτήθηκε στις 17 Μαρτίου 2012.
- ↑ Timo Sirainen (2007-05-19). «CVS to Mercurial switch». Dovecot-news mailing list. http://www.dovecot.org/list/dovecot-news/2007-May/000044.html.
- ↑ «Open Source». 8 Ιουλίου 2011.
- ↑ «Mercurial Work Flow». 13 Μαρτίου 2011.
- ↑ Ryan C. Gordon (11 Μαΐου 2010). «Lugaru goes open source!».
- ↑ J. Paul Reed (12 Απριλίου 2007). «Version Control System Shootout Redux Redux».
- ↑ «Switch to hg.netbeans.org completed». Ιανουαρίου 2008. Αρχειοθετήθηκε από το πρωτότυπο στις 18 Σεπτεμβρίου 2012. Ανακτήθηκε στις 17 Μαρτίου 2012.
- ↑ «Mercurial « OGRE – Open Source 3D Graphics Engine». 4 Απριλίου 2010. Αρχειοθετήθηκε από το πρωτότυπο στις 2 Ιανουαρίου 2011. Ανακτήθηκε στις 17 Μαρτίου 2012.
- ↑ James Gosling. Συνέντευξη με Robert Eckstein. James Gosling on Open Sourcing Sun's Java Platform Implementations, Part 1. October 2006.
- ↑ «OpenIndiana Source Repositories». 13 Μαρτίου 2011. Αρχειοθετήθηκε από το πρωτότυπο στις 15 Αυγούστου 2016. Ανακτήθηκε στις 17 Μαρτίου 2012.
- ↑ «RawTherapee». 4 Ιανουαρίου 2010.
- ↑ «Mercurial Repositories». Αρχειοθετήθηκε από το πρωτότυπο στις 21 Μαρτίου 2012. Ανακτήθηκε στις 13 Απριλίου 2011.
- ↑ David Wood (6 Απριλίου 2009). «We decided in the end to use Mercurial rather than Git». Αρχειοθετήθηκε από το πρωτότυπο στις 14 Απριλίου 2009. Ανακτήθηκε στις 7 Μαΐου 2009.
- ↑ «Distributed VCS: On git and mercurial, a transition from SVN». Αρχειοθετήθηκε από το πρωτότυπο στις 25 Απριλίου 2012. Ανακτήθηκε στις 17 Μαρτίου 2012.
Εξωτερικοί σύνδεσμοι
[Επεξεργασία | επεξεργασία κώδικα]- http://mercurial.selenic.com/ Αρχειοθετήθηκε 2010-09-24 στο Wayback Machine. (Αγγλικά)
- Mercurial: The Definitive Guide, βιβλίο του Bryan O'Sullivan (εκδόσεις O'Reilly, 2009) που διατίθεται ελεύθερα σε ηλεκτρονική μορφή (Αγγλικά)
- Mercurial: an alternative to git from LWN.net (Αγγλικά)
- Google TechTalk on Mercurial Αρχειοθετήθηκε 2010-04-06 στο Wayback Machine. (Αγγλικά)
- Subversion or CVS, Bazaar or Mercurial? Four open source version control systems compared (Αγγλικά)
- Joel Spolsky's Mercurial tutorial (Αγγλικά)
- The Architecture of Open Source Applications: Mercurial (Αγγλικά)