Mercurial

Το Mercurial είναι ένα εργαλείο κατανεμημένου ελέγχου εκδόσεων (distributed revision control) για χρήση στον προγραμματισμό λογισμικού. Έχει υλοποιηθεί κυρίως στη γλώσσα προγραμματισμού Python αλλά περιλαμβάνει μια υλοποίηση του diff σε C. Υποστηρίζει τα Windows και τα συστήματα τύπου Unix, όπως το FreeBSD, το Mac OS X και το Linux. Το Mercurial είναι πρόγραμμα της γραμμής εντολών αλλά διατίθενται γραφικές επεκτάσεις. Όλες οι λειτουργίες του Mercurial καλούνται σαν παράμετροι στο βασικό πρόγραμμα hg, το όνομα του οποίου αποτελεί το σύμβολο στη χημεία του στοιχείου υδράργυρος ().

Οι βασικοί σχεδιαστικοί στόχοι του Mercurial είναι η γρήγορη ταχύτητα και η δυνατότητα αυτή να κλιμακώνεται (scalability), η ανάπτυξη λογισμικού χωρίς κεντρικό σημείο και με δυνατότητες πλήρως κατανεμημένης συνεργασίας, σωστό χειρισμό απλού κειμένου και δυαδικών αρχείων, και προχωρημένες δυνατότητες δημιουργίας και συγχώνευσης κλάδων (branching/merging), ενώ ταυτόχρονα το σύστημα να παραμένει απλό. Περιλαμβάνει διαδικτυακή διεπαφή και εργαλεία για τη διευκόλυνση της μετάβασης από συστήματα σε 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. Βασικός λόγος που οδήγησε στην ανακοίνωση ήταν η απόφαση της Bitmover, τον ίδιο μήνα, να σταματήσει τις δωρεάν εκδόσεις του BitKeeper.

Το BitKeeper χρησιμοποιούνταν για τη διαχείριση εκδόσεων στο εγχείρημα του πυρήνα Linux. Ο Mackall αποφάσισε να γράψει ένα σύστημα κατανεμημένου ελέγχου εκδόσεων, το οποίο θα το αντικαθιστούσε, για χρήση στην ανάπτυξη του πυρήνα. Το εγχείρημα ξεκίνησε μερικές ημέρες μετά το Git, που το άρχισε ο Λίνους Τόρβαλντς με παρόμοιους στόχους.

Το εγχείρημα του πυρήνα Linux αποφάσισε να χρησιμοποιήσει το Git αντί του Mercurial, αλλά το Mercurial χρησιμοποιείται σήμερα από πολλά άλλα εγχειρήματα (δείτε παρακάτω, στην αντίστοιχη ενότητα).

 Σχετικό λογισμικό 

 Κάποια γραφικά εργαλεία (GUI) για το Mercurial είναι:
 Hgk (tcl/tk) Επέκταση του Mercurial και μέρος της επίσημης έκδοσης. Εμφανίζει έναν κατευθυνόμενο ακυκλικό γράφο των αλλαγών (changesets) σε ένα αποθετήριο Mercurial. Το πρόγραμμα καλείται με την εντολή hg view (αν η επέκταση είναι ενεργοποιημένη). Το hgk βασίστηκε αρχικά σε ένα παρόμοιο εργαλείο για το Git, το gitk. Το hgk μπορεί να αντικατασταθεί από το hgview , το οποίο είναι γραμμένο σε καθαρή Python και μπορεί να ενσωματωθεί στα γραφικά περιβάλλοντα GTK και QT.
 TortoiseHg Το TortoiseHg είναι επέκταση του κελύφους του λειτουργικού συστήματος, μαζί με κάποιες εφαρμογές, για το Mercurial. Υπάρχουν εκδόσεις για τους διαχειριστές αρχείων Windows Explorer και GNOME Nautilus.
 Murky  Γραφικό εργαλείο για το 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  και  HgSccPackage .
 Το NetBeans, από την έκδοση 6, υποστηρίζει το Mercurial.
 Το Eclipse υποστηρίζει το Mercurial με το πρόσθετο MercurialEclipse.

 Χρήση από εγχειρήματα 

 Φιλοξενία πηγαίου κώδικα 

Οι παρακάτω ιστοσελίδες παρέχουν δωρεάν φιλοξενία πηγαίου κώδικα σε Mercurial:
 Bitbucket
 CodePlex
 Google Code
 JavaForge
 Project Kenai, της Oracle
 SourceForge
 Assembla
 GNU Savannah
 Alioth, του Debian
 BerliOS
 Kiln
 Άλλες ιστοσελίδες, από το wiki του Mercurial

 Εγχειρήματα που χρησιμοποιούν το Mercurial 
Κάποια εγχειρήματα που χρησιμοποιούν το Mercurial για τον κατανεμημένο έλεγχο εκδόσεων είναι τα εξής:Some projects that use Mercurial

 Adium
 Audacious
 Coin3D
 CubicWeb
 Dovecot, εξυπηρετητής IMAP
 Dreamwidth (πλατφόρμα blogging)
 GeeXboX
 GNU Multi-Precision Library
 GNU Octave
 Go, γλώσσα προγραμματισμού
 Growl
 Illumos LEMON
 LinuxTV/Video4Linux
 Lugaru HD
 LuxRender, μηχανή φωτοαπόδοσης 3D
 Mercurial
 MoinMoin, λογισμικό wiki
 Mozilla
 Mutt
 Netbeans
 Nuxeo
 Ogre3D
 OpenJDK
 OpenIndiana OSSEC
  PETSc
 Python
 RabbitMQ
 RawTherapee
 Sage
 Symbian OS
 Nokia Maps

 Tryton
 Tuenti
 Vim
 W3C

 Δείτε επίσης 
 Κατανεμημένος έλεγχος εκδόσεων
 Darcs

 Παραπομπές 

 Εξωτερικοί σύνδεσμοι 

 http://mercurial.selenic.com/  
 Mercurial: The Definitive Guide, βιβλίο του Bryan O'Sullivan (εκδόσεις O'Reilly, 2009) που διατίθεται ελεύθερα σε ηλεκτρονική μορφή 
 Mercurial: an alternative to git from LWN.net 
 Google TechTalk on Mercurial  
 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 

Κατηγορία:Ελεύθερο λογισμικό