TasPython. Εισαγωγή στο Mercurial

Σχετικά έγγραφα
Version Control Systems Mercurial SCM. Μανώλης Κιαγιάς

Πανεπιστήμιο Κρήτης, Τμήμα Επιστήμης Υπολογιστών ΗΥ463 Συστήματα Ανάκτησης Πληροφοριών Χειμερινό Εξάμηνο

Subversion. Τριγάζη Ελισάβετ. Επιβλέπων: Μηνάς Δασυγένης

Σεμινάριο Git & GitLab. Γιώργος Τσιάτσιος Δημήτρης Κάσσος

SUBVERSION. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Δ. Ζήνδρος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Εργαστήριο 2. Εισαγωγή στο Git Versioning System

Στην συνέχεια και στο επόµενο παράθυρο η εφαρµογή µας ζητάει να εισάγουµε το Username και το Password το οποίο σας έχει δοθεί από τον ΕΛΚΕ.

Εισαγωγή στα SCM εργαλεία και στο Subversion

Θερινό Σχολείο, Ιουλίου Εισαγωγή στο. Αχιλλέας Πιπινέλης. Μονάδα Αριστείας ΕΛ/ΛΑΚ ΤΕΙ Αθήνας

Σεμινάριο Git & GitHub. Θέμης Παπαμελετίου Διονύσης Ζήνδρος

Σεμινάριο Git & GitLab. Τάκης Παναγόπουλος Νικόλας Μπομπέτσης

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Σύντομη εισαγωγή στο εργαστήριο

Το Ηλεκτρονικό Ταχυδροµείο ( ) είναι ένα σύστηµα που δίνει την δυνατότητα στον χρήστη να ανταλλάξει µηνύµατα αλλά και αρχεία µε κάποιον άλλο

ΥΠΗΡΕΣΙΑ WEBMAIL ΚΥΠΕΣ

Epsilon Net PYLON Platform

Οδηγίες χειρισµού. Οδηγίες χρήσεως driver B

Περιεχόµενα. 1 Εισαγωγή: Λίγα λόγια για το βιβλίο Τι νέο υπάρχει στο Outlook Ξεκίνηµα Ευχαριστίες...

Σεμινάριο Git & GitHub Ημέρα 2

Βιβλιοθήκη Γυµνασίου Μαγούλας.Υποστήριξη ΑΒΕΚΤ ( )

Βάιος Κολοφωτιάς Msc Informational Systems. Μια εισαγωγή στο GIT

Εγχειρίδιο Φοιτητών. 1. Εισαγωγή

MEGASOFT ΤΜΗΜΑ ΥΠΟΣΤΗΡΙΞΗΣ. Οδηγός Ρυθµίσεων Συγχρονισµού PrismaWin Pos Sync

Εγχειρίδιο Φοιτητών. 1. Εισαγωγή

Αρχική σελίδα. Κατάσταση. Άµεση πρόσβαση

Εξαγωγή Οικονοµικών Αναφορών (Ισολογισµός, Αποτελέσµατα Χρήσης, Λογαριασµοί Γενικής Εκµετάλλευσης) στην Εφαρµογή Ms Excel

Χρήση του Ηλεκτρονικού Ταχυδροµείου µεαποµακρυσµένη σύνδεση

Πλατφόρµα Ασύγχρονης Τηλεκπαίδευσης eclass 2.0. Οδηγίες Αναβάθµισης (Upgrade) Αθήνα, 1 Ιουνίου Εισαγωγή

2.1. Οι λογαριασµοί χρηστών Σύνδεση (login) και αποσύνδεση (logout)

Αρχιτεκτονική Υπολογιστών

Σχήµα 6.1: Εισαγωγή της εντολής Read From Spreadsheet File στο Block Diagram.

Εγχειρίδιο Χρήστη - Μαθητή

Εισαγωγή και επεξεργασία δεδοµένων

Μια εισαγωγή στο Linux με την διανομή Fedora. Βάιος Κολοφωτιάς MSc Informational Systems

Computing and Information Systems Service. ιαχείριση Αρχείων

Λειτουργικά Συστήματα Ι - Εργαστήριο

Προϋποθέσεις για τo MyPC : WinXP µε ServicePack 2 Εγκαθιστούµε το USB Wifi στο MyPC µε όλους τους drivers και τα σχετικά. Αρχικά θα πρέπει να επιτύχου

Εγκατάσταση. Εγκατάσταση του Wamp

Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy

Outlook Express-User Instructions.doc 1

Απλά, γρήγορα, σωστά ΒΑΣΙΚΕΣ Ο ΗΓΙΕΣ ΧΡΗΣΗΣ ΥΠΗΡΕΣΙΩΝ

PRISMA WIN APPLICATION SERVER. ιαχείριση υπηρεσιών στοιχείων (COM+) Οδηγός διαχείρισης δικαιωµάτων πρόσβασης & εκκίνησης PRISMA Win Application Server

Atlantis - Νέο user interface

ιαχείριση Πληροφοριών στο ιαδίκτυο

του και από αυτόν επιλέγουµε το φάκελο εµφανίζεται ένα παράθυρο παρόµοιο µε το ακόλουθο:

Git - Version Control System & GoogleCode

Απλά, γρήγορα, σωστά ΒΑΣΙΚΕΣ Ο ΗΓΙΕΣ ΧΡΗΣΗΣ ΥΠΗΡΕΣΙΩΝ

Ο ΗΓΙΕΣ ΓΙΑ ΤΟ ΚΛΕΙΣΙΜΟ ΧΡΗΣΗΣ ΣΤΟ DYNAMICS NAV INNOVERA ERP

Εγχειρίδιο Φοιτητών. 1. Εισαγωγή

ΕΓΚΑΤΑΣΤΑΣΗ ΕΦΑΡΜΟΓΩΝ ΓΙΑ ΠΡΟΣΩΠΙΚΟ ΥΠΟΛΟΓΙΣΤΗ (MS WINDOWS, LINUX, MACOS)

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΑΝΕΠΙΣΤΗΜΙΟ

ηµιουργία παρουσιάσεων (Power Point)

Ενσωματωμένα Συστήματα

ΕΡΓΑΣΤΗΡΙΟ 1: Εισαγωγή, Χρήσιμες Εφαρμογές

Οδηγίες για την κατασκευή του αρχείου «Ταυτότητα (α+β) 2» 1. Αποκρύπτουµε τους άξονες και το παράθυρο άλγεβρας: Παράθυρο προβολή

ΧΡΗΣΙΜΟΠΟΙΩΝΤΑΣ ΤΟ ARIS

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

Γνωριµία µε τη Microsoft Access

Σε αυτό το µάθηµα θα ασχοληθούµε µε τη βελτίωση της εµφάνισης ενός ιστοτόπου, αλλά και τον εύκολο χειρισµό όλων των αλλαγών στην εµφάνιση της σελίδας

Περιπτώσεις αλλαγής Λογιστικού Σχεδίου.

Ο ΗΓΙΕΣ ΧΡΗΣΤΗ AR-7664

ΕΡΓΑΣΤΗΡΙΟ 1: 1 Εισαγωγή, Χρήσιμες Εφαρμογές

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

Open eclass Πλατφόρμα Ασύγχρονης Τηλεκπαίδευσης

Σύντομη εισαγωγή στο λειτουργικό σύστημα Linux

MICROSOFT OFFICE 2003 MICROSOFT WORD 2003

Unix: Εντολές, οργάνωση και χειρισµός αρχείων, διεργασίες

Κατασκευή λογισµικού: ηµήτριος Χάρµπας Πυθαγόρα 24, Χολαργός Τηλ: ηλ-ταχ: Οδηγίες εγκατάστασης

1. Εγκατάσταση του NetMeeting

Ασφάλειες Database Οδηγίες Χρήσης Εφαρµογής

Υπηρεσία διαμοιρασμού αρχείων

eorder Ηλεκτρονική Παραγγελιοληψία ΣΥ.ΦΑ. Θεσσαλονίκης

Εισαγωγή στον Προγραμματισμό Μάθημα 1: Βασική Πλοήγηση σε Linux CLI. Οκτώβριος 2016 Χ. Αλεξανδράκη

ΚΕΦΑΛΑΙΟ Web Services

Οδηγίες για το Βιβλίο Κοστολογίου στα Γ κατηγορίας βιβλία

ΠΛΗΡΟΦΟΡΙΑΚΟ ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΚΑΤΑΣΚΕΥΗΣ ΚΑΙ ΑΝΑΚΑΙΝΙΣΗΣ ΑΚΙΝΗΤΩΝ

CYGWIN Οδηγίες Χρήσης (Συγγραφέας: Γιώργος ούκας)

Οδηγίες. Xρήση της Υπηρεσίας Φιλοξενίας Προσωπικών Ιστοσελίδων (Private Web hosting)

ΟΔΗΓΙΕΣ ΠΑΡΑΜΕΤΡΟΠΟΙΗΣΗΣ ΓΙΑ ΤΗΝ ΔΙΑΣΥΝΔΕΣΗ ΜΕ ΣΥΣΤΗΜΑ ΕΙΣΡΟΩΝ-ΕΚΡΟΩΝ

Version X. Οδηγίες χρήσης

ΓΡΗΓΟΡΗ ΜΑΝΑΡΙΩΤΗ Ερωτήσεις Εµπέδωσης Αξιολόγησης για το EXCEL

Sheet2. Σωστή, και µπράβο που µεριµνήσατε για λίστες διαφορετικών µεγεθών.

Εισαγωγή στην Επιστήμη της Πληροφορικής Εργαστήριο. UNIX Μέρος 1

ΚΕ.ΠΛΗ.ΝΕ.Τ. ΖΑΚΥΝΘΟΥ 2013 ΜΕΡΙΚΕΣ ΠΡΑΚΤΙΚΕΣ ΛΥΣΕΙΣ ΓΙΑ ΟΛΟΥΣ WINDOWS 8

Αντί προλόγου. 1. Τι είναι το Twitter;

2 Ο Ε.Κ.Φ.Ε. ΗΡΑΚΛΕΙΟΥ. Οδηγίες χρήσης PDFCreator

Διαχείριση Βάσης Δεδομένων (dbadmin)

Λογαριασμοί Χρηστών στα Windows 7 / Windows 8

ηµιουργία Β.. ανειστική Βιβλιοθήκη Μάθηµα 5 Ορισµός σχέσεων - Σύνδεση πινάκων

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

Οδηγίες κλεισίµατος Ισολογισµού Οικονοµικές Αναφορές

ιαχείριση Στόλου Οχηµάτων

MS SQL 2012 Express (Εγκατάσταση με Advanced Services)

ΠΡΟΓΡΑΜΜΑ ΑΠΟΜΑΚΡΥΣΜΕΝΗΣ ΕΙΣΑΓΩΓΗΣ ΒΑΘΜΟΛΟΓΙΩΝ ΑΠΟ ΔΙΔΑΣΚΟΝΤΕΣ

Συνεργείο Αυτοκινήτων

Λειτουργικά Συστήματα

Tiles Editor. 'Εκδοση 7

ΠΑΓΚΑΛΟΣ ΙΩΑΝΝΗΣ ΣΙΣΜΑΝΗΣ ΝΙΚΟΣ. File Transfer Protocol

Η εφαρµογή xsortlab. Οπτικός τρόπος ταξινόµησης

Πλατφόρμα Ασύγχρονης Τηλεκπαίδευσης eclass 1.7. Οδηγίες Αναβάθμισης (Upgrade) Αθήνα, 16 Μαρτίου Εισαγωγή

Ψηφιακή υπογραφή από το Πανελλήνιο Σχολικό Δίκτυο (Έκδοση, Εγκατάσταση, Χρήση, Απεγκατάσταση)

Transcript:

TasPython Εκµαθηση του Mercurial Βηµα Βηµα Εισαγωγή στο Mercurial Συγγραφέας : Κωνσταντίνος Αραβανής e-mail: arabanis@ceid.upatras.gr Οµάδα : TasPython 23 Οκτωβρίου 2009

1 Εισαγωγή Ο παρόν οδηγός αποτελεί ένα εισαγωγικό ϐήµα για την χρήση του Mercurial και για πιο προχωρηµένα ϑέµατα ϑα πρέπει να απευθυνθείτε σε άλλα σηµεία. Το Mercurial πρόκειται για ένα σύστηµα διαχείρισης εκδόσεων (version control system) το οποίο είναι γραµµένο σε Python. Συγκεκριµένα µας ϐοηθάει να κρατάµε εκδόσεις (ή και backups) της δουλείας µας εύκολα µε αυτόµατο τρόπο χωρίς να χρειάζεται να δηµιουργούµε ως συνήθως πολλούς ϕακέλους µε ονόµατα όπως : version-1, version-2,..., version-. Αυτό που κάνει το Mercurial είναι να ελέγχει την τελευταία έκδοση µε την τρέχουσα προς δηµιουργία και να κρατά τις διαφορές τους. Επίσης πολλές ϕορές σε ένα κώδικα ή ένα αρχείο µπορεί να δουλεύουν ταυτόχρονα πολλά άτοµα. Το Mercurial είναι ένα εργαλείο που µπορεί να µας ϐοηθήσει στο να συγχωνεύσουµε αυτόµατα τις αλλαγές που κάνουν διάφορα άτοµα πάνω στα ίδια αρχεία και να µπορούµε να κάνουµε εναλλαγές στο κώδικα από την µία έκδοση στην άλλη πολύ εύκολα. 2 Εγκατάσταση 1. Για Linux υπάρχει ήδη έτοιµο πακέτο σχεδόν για όλες τις distributions 2. Για Mac OS X είτε πρέπει να γίνει compile ο κώδικας του Mercurial, είτε να εγκατασταθεί το εκτελέσιµο. 3. Για Windows προτείνεται το TortoiseHg που µπορείτε να το ϐρείτε εδώ : http://mercurial.selenic.com/wiki/tortoisehg Για περισσότερες πληροφορίες σχετικά µε τα παραπάνω επισκεφτείτε αυτή τη σελίδα : http://mercurial.selenic.com/wiki/download 3 Ορίζοντας το username σας Ως προεπιλογή το Mercurial χρησιµοποιεί ως όνοµα χρήστη κάτι του τύπου me@my_pc για τα commits, κάτι το οποίο είναι ανούσιο. Προτείνεται ο χρήστης να ϱυθµίσει κατάλληλα το /.hgrc (ή σε Windows το %USERPROFILE%/Mercurial.ini) ώστε να εµφανίζει το όνοµα του και το e-mail του, προσθέτοντας τις παρακάτω γραµµες : [ui] username = Kostantinos Aravanis <arabanis@ceid.upatras.gr> 2

4 Βοήθεια! - hg 1 help Οπως είναι λογικό και όπως κάνατε σε κάθε καινούργιο σύστηµα, κάπου ϑα πρέπει να απευθυνθείτε για ϐοήθεια. Το Mercurial έχει τη δικιά του εντολή ϐοήθειας που σας επιτρέπει πατώντας : me@my_pc: /project_folder$ hg help να δείτε τη λίστα µε τις εντολές και τα διάφορα ϑέµατα που µπορεί να σας α- πασχολούν. Επίσης αν ϑέλετε να µάθετε, για παράδειγµα, περισσότερα για την εντολή add µπορεί να γράψετε : me@my_pc: /project_folder$ hg help add 5 ηµιουργία του Repository - hg init Εστω ότι ϑέλουµε να ξεκινήσουµε ένα project και ϑέλουµε να διαχειριστούµε τις διάφορες εκδόσεις του µε το Mercurial, το πρώτο που έχουµε να κάνουµε είναι να αρχικοποιήσουµε ένα hg repository 2. Αυτό το κάνουµε ως εξής : me@my_pc: $ mkdir project_folder me@my_pc: $ cd project_folder/ me@my_pc: /project_folder$ hg init Επίσης αν ϑέλετε γενικά το Mercurial να αγνοεί στο project σας κάποια αρχεία µε συγκεκριµένα glop patterns και regular expressions αυτό που έχετε να κάνετε είναι να προσθέσετε ένα αρχείο µε όνοµα.hgignore κάτω από το κύριο ϕάκελο του project (παραπάνω για παράδειγµα αυτός ήταν ο project_folder), το οποίο ϑα περιέχει αυτά που ϑέλετε να αγνοούνται από το Mercurial. Ενα παράδειγµα αυτού του αρχείου ϑα µπορούσε να είναι το παρακάτω : syntax: glob *.orig *.rej * *.o tests/*.err 1 Το hg πρόκειται για την κωδική ονοµασία του στοιχείου Mercurial στον περιοδικό πίνακα. 2 Με τον όρο repository εδώ εννοούµε κάτι το οποίο παρακολουθεί την πορεία των αλλαγών στο project σε όλο το παρελθόν. Στην ουσία είναι κρυµµένο στον ϕάκελο.hg. 3

syntax: regexp.*\#.*\#$ 6 Πρόσθεση Αρχείου στο Repository - hg add Αν στο ϕάκελο του project σας δηµιουργήσατε ένα καινούργιο αρχείο, έστω new.py και ϑέλετε να ληφθεί υπόψη από το repository σας, αυτό που έχετε να κάνετε είναι να πατήσετε : me@my_pc: /project_folder$ hg add new.py Αν πάλι έχετε δηµιουργήσει πολλά αρχεία και ϑέλετε να προστεθούν όλα στο repository απλά πατήστε : me@my_pc: /project_folder$ hg add 7 Αφαίρεση Αρχείου από το Repository - hg remove Αν κάποιο αρχείο που χρησιµοποιούσατε σε παλιότερες εκδόσεις δεν το χρειάζεστε πια και ϑέλετε να το διαγράψετε από το repository σας, αυτό που έχετε να κάνετε είναι να πατήσετε : me@my_pc: /project_folder$ hg remove useless.txt Αυτή η εντολή διαγράφει άµεσα και το αρχείο από το ϕάκελο του project. 8 Μετονοµασία Αρχείου στο Repository - hg rename Στο σηµείο αυτό πρέπει να τονιστεί ότι ο σωστός τρόπος για την µετονοµασία ενός αρχείου είναι µέσω της hg rename. Συγκεκριµένα, έστω ότι ϑέλετε να µετονο- µάσετε ένα αρχείο από sth.py σε sth_else.py, αυτό που έχετε να κάνετε είναι να πατήσετε : 4

me@my_pc: /project_folder$ hg rename sth.py sth_else.py Η παραπάνω εντολή µετονοµάζει το αρχείο στο ϕάκελο στον οποίο δουλεύετε και αυτόµατα σηµειώνει το παλιό αρχείο προς διαγραφή από το repository και το καινούργιο προς πρόσθεση. Ενας κακός τρόπος για να κάνετε το ίδιο ϑα ήταν ο ακόλουθος : me@my_pc: /project_folder$ cp sth.py sth_else.py me@my_pc: /project_folder$ hg remove sth.py me@my_pc: /project_folder$ hg add sth_else.py Αλλά µε αυτό τον τρόπο το Mercurial δεν γνωρίζει πια ότι αυτό είναι το ίδιο αρχείο και το αναγκάζετε να χρησιµοποιήσει πολύ παραπάνω χώρο από ότι αν χρησιµοποιούσατε την εντολή hg rename. 9 Επίβλεψη της τρέχουσας κατάστασης - hg status Αν τώρα έχετε προχωρήσει σε αλλαγές αρχείων, δηµιουργία καινούργιων ή διαγραφή προϋπάρχοντων και ϑέλετε να µάθετε τι έχει αλλάξει από την τελευταία έκδοση 3 του project σας αρκεί να πατήσετε : me@my_pc: /project_folder$ hg status Το αποτέλεσµα της παραπάνω εντολής είναι η εµφάνιση µίας λίστας µε τα αρχεία που ϐρίσκονται στο ϕάκελο και στους υποφακέλους του project σας µε ένα χαρακτήρα στην αρχή τους που περιγράφει την κατάσταση τους. Οι δυνατοί χα- ϱακτήρες είναι οι παρακάτω :? το παρόν αρχείο δεν έχει προστεθεί στο repository A το παρόν αρχείο έχει προστεθεί στο repository µετά την δηµιουργία της τελευταίας έκδοσης του project M το παρόν αρχείο έχει προστεθεί στο repository αλλά έχει αλλάξει από την τελευταία έκδοση του project R το παρόν αρχείο έχει σηµειωθεί προς αφαίρεση από το repository Αν πάλι ϑέλετε να µάθετε για την κατάσταση ενός µόνο αρχείο, για παράδειγµα έστω file.txt, όπως είναι λογικό απλά πατάτε : 3 Για το πως µπορείτε να δηµιουργήσετε καινούργιες εκδόσεις µπορείτε να απευθυνθείτε σε παρακάτω ενότητα 5

me@my_pc: /project_folder$ hg status file.txt Να σηµειωθεί ότι η συγκεκριµένη εντολή αγνοεί όλα τα αρχεία που ταιριάζουν στα glob patterns και regular expressions που ϐρίσκονται στο αρχείο.hgignore που αναφέρθηκε και σε παραπάνω ενότητα. 10 Ποίες οι αλλαγές ; - hg diff Αν τώρα κατά το hg status παρατηρήσατε ότι το file.txt παρουσιαζόταν ως αλλαγ- µένο (M - modified) και ϑέλετε να δείτε ποιες ακριβώς είναι οι αλλαγές που έχουν γίνει από την τελευταία του έκδοση απλά πατάτε : me@my_pc: /project_folder$ hg diff Να σηµειώσουµε ότι µε ( ) εµφανίζονται οι γραµµές που αφαιρέθηκαν και µε (+) αυτές που προστέθηκαν, οι υπόλοιπες εκτυπώνονται κανονικά. 11 ηµιουργία καινούργιας Εκδοσης - hg commit Τόση ώρα αναφέρονται οι εκδόσεις, αλλά δεν έχει γίνει λόγος για το πως δηµιουργείται µία έκδοση. Αυτό είναι απλό! Απλά πατάµε : me@my_pc: /project_folder$ hg commit -m "comment" Στην ουσία αυτό που γίνεται είναι ότι παγώνουν όλα τα αρχεία που έχουν προστε- ϑεί στο repository και αποθηκεύεται η έκδοση µε ένα µήνυµα που στη περίπτωσή µας είναι το comment. 12 Ποια η Ιστορία ; - hg log Αν ϑέλετε να δείτε την ιστορία του project σας ανάµεσα στις διάφορες εκδόσεις του απλά πατάτε : me@my_pc: /project_folder$ hg log 6

13 Πότε Γράφτηκε Τι και Από Ποιον - hg blame Αν πατήσετε : me@my_pc: /project_folder$ hg blame file.txt µπορείτε να δείτε σε ποία έκδοση γράφτηκε η κάθε γραµµή του αρχείου σας. Ενώ αν πατήσετε : me@my_pc: /project_folder$ hg blame -u file.txt µπορείτε να δείτε ποιος την έγραψε...! 14 Αλλαγή Εκδοσης - hg update ύο τρόποι για να πλοηγηθούµε - επιστρέψουµε σε παλιές και άλλες εκδόσεις του project είναι είτε γνωρίζοντας τον αριθµό της έκδοσης (revision) που παράγεται αυτόµατα από το Mercurial, δίνοντας στη πρώτη έκδοση τον αριθµό 0, στη δεύτερη το 1 και ούτω καθ εξής, είτε µε την χρήση των ετικετών (tags). 14.1 Με τη χρήση του revision αριθµού Καταρχήν ϑα πρέπει να σηµειωθεί ότι ο revision αριθµός πρόκειται για αυτόν που εµφανίζεται δίπλα στο τοµέα changeset σε κάθε έκδοση όταν πατάµε την εντολή hg log. Για παράδειγµα αν για κάποια έκδοση εµφανίζεται το ακόλουθο : changeset: 1:cfdc8f58ee4c user: me@my_pc date: Sat Oct 17 19:01:39 2009 +0300 summary: comment τότε ξέρουµε ότι ο revision αριθµός της συγκεκριµένης έκδοσης είναι το 1. Για να µεταβούµε τώρα σε αυτή την έκδοση αρκεί να πατήσουµε : me@my_pc: /project_folder$ hg update -r 1 7

14.2 Με τη χρήση των tags 14.2.1 ηµιουργία tags - hg tag Πριν ξεκινήσουµε να µιλάµε για την αλλαγή εκδόσεων µε τη χρήση των tags µάλλον ϑα πρέπει πρώτα να µιλήσουµε για το πως δηµιουργούµε tags για τις διάφορες εκδόσεις. Στην ουσία τα tags είναι ένας πιο εύκολος τρόπος να πλοηγη- ϑούµε στις διάφορες εκδόσεις. Εστω λοιπόν ότι στην έκδοση µε revision αριθµό 3 ϑέλουµε να ϐάλουµε το tag release 1.0, τότε αυτό που έχουµε να κάνουµε είναι : me@my_pc: /project_folder$ hg tag -r 3 "release 1.0" Να σηµειωθεί ότι κάθε ϕορά στη τελευταία έκδοση ανατίθεται αυτόµατα το tag tip. 14.2.2 Αλλαγή έκδοσης µε tags Για να αλλάξουµε έκδοση από αυτή που είµαστε σε κάποια άλλη (υπάρχουσα) µε tag tag_name απλά πατάµε : me@my_pc: /project_folder$ hg update tag_name Για να πάµε στη τελευταία έκδοση σύµφωνα και µε τα παραπάνω απλά εκτελούµε την εντολή : me@my_pc: /project_folder$ hg update tip 15 Εύρεση Τρέχουσας Εκδοσης - hg parents Για να δούµε τα αρχεία του project µας σε ποια έκδοση ανήκουν αρκεί να πατήσουµε την εντολή : me@my_pc: /project_folder$ hg parents 16 Επαναφορά Αρχείου - hg revert Οπως είναι λογικό µπορεί να σας τύχει να κάνετε αλλαγές σε συγκεκριµένα αρχεία, που τελικά να είναι λάθος, και να µη ϑέλετε να επιστρέψετε ολόκληρο το project σε κάποια παλιότερη έκδοση. Για αυτό υπάρχει µία άλλη εντολή που στόχος της είναι να κάνει επαναφορά συγκεκριµένων αρχείων όπως ϐρίσκονταν στην έκδοση που ϐρίσκεστε, όταν αυτή είχε γίνει commit. Για να το κάνετε αυτό απλά πατάτε : 8

me@my_pc: /project_folder$ hg revert file.txt 17 Ακύρωση Αποστολής Εκδοσης - hg rollback Αν τώρα χρειαστεί να ακυρώσετε ένα commit που έχετε κάνει, αυτό µπορεί να γίνει για το τελευταίο και µόνο commit, πατώντας : me@my_pc: /project_folder$ hg rollback 18 Backup του Repository - hg clone Για να κάνετε backup του repository υπάρχουν δύο τρόποι : 1. Είτε απλά αντιγράφοντας το ϕάκελο του project σας 2. Είτε ο προτεινόµενος που είναι πατώντας την εντολή : me@my_pc: /project_folder$ cd.. me@my_pc: $ hg clone project_folder backup_of_project_folder Η εντολή αυτή παράγει ένα πιστό αντίγραφο του ϕακέλου (µε όλα τα περιεχόµενα του) project_folder! 19 Πολλαπλά Repository Υπάρχουν περιπτώσεις που ένα project το αναπτύσσουν πολλά άτοµα, που το καθένα έχει αναλάβει ένα συγκεκριµένο κοµµάτι. Σε τέτοιες περιπτώσεις τα πολλαπλά repositories έρχονται να δώσουν λύση στα προβλήµατα διαχείρισής της όλης εργασίας. Συγκεκριµένα αφού δηµιουργηθεί ένα κύριο repository µετά οι υπόλοιποι εργαζόµενοι πάνω στο project δηµιουργούν από ένα κλώνο και κάνουν τις αλλαγές τους εκεί. Με άλλα λόγια η διαδικασία είναι η παρακάτω για n εργα- Ϲοµένους : Πρώτα ϕτιάχνουµε το ϕάκελο του project που ϑα περιέχει και το κύριο repository: me@my_pc: $ mkdir project_master me@my_pc: $ cd project_master me@my_pc: /project_master$ hg init. 9

Κατόπιν ο κάθε εργαζόµενος έστω i ϑα πάρει από ένα κλώνο µε την παρακάτω διαδικασία : me@my_pc: $ hg clone project_master project_copy_i me@my_pc: $ cd project_copy_i Στη συνέχει ο κάθε εργαζόµενος δουλεύει στο δικό του κλώνο και κάνει commit τις αλλαγές στο δικό του repository (που ϐρίσκεται στον αντεγραµµένο ϕάκελο ουσιαστικά). Αφού λοιπόν µετά ο εργαζόµενος i τελειώσει τη δουλειά του µπορεί να περάσει τις αλλαγές του στο κύριο repository απλά πατώντας την ακόλουθη εντολή : me@my_pc: /project_copy_i$ hg push Αν στη συνέχεια ο εργαζόµενος j ϑέλει να ενηµερώσει τη δουλειά του µε ότι έχει γίνει push από τους λοιπούς εργαζόµενους στο κύριο repository αρκεί να πατήσει : me@my_pc: /project_copy_j$ hg pull Βέβαια να σηµειωθεί ότι η παραπάνω εντολή απλά ενηµερώνει το repository και για να δει ο εργαζόµενος j τις αλλαγές ϑα πρέπει να ενηµερώσει το ϕάκελο του : me@my_pc: /project_copy_j$ hg update Αν όµως ο εργαζόµενος j δουλεύει σε ένα ίδιο αρχείο µε άλλους εργαζοµένους και κάποιοι από αυτούς έχουν κάνει κάποια αλλαγή σε αυτό τότε ϑα πρέπει πρώτα να γίνει συγχώνευση 4 των αλλαγών του µε αυτές των άλλων πατώντας : me@my_pc: /project_copy_j$ hg merge Επίσης µετά από µία συγχώνευση είναι σύνηθες να γίνονται commit οι αλλαγές µε σχόλιο τη λέξη merge. me@my_pc: /project_copy_j$ hg commit -m "merge" 4 Καµία ϕορά το merging µπορεί να µη µπορεί να γίνει αυτοµατοποιηµένα και ο χρήστης να πρέπει να το κάνει χειροκίνητα. Παρόλα αυτά αυτό είναι ένα αρκετά σπάνιο ϕαινόµενο. 10

20 Εξαγωγή του Patch Για να εξάγεται ένα patch απλά εκτελείται : me@my_pc: /project_folder$ hg export $tag_or_revision 21 Που κρύβεται όλη η ιστορία του project Το repository µε όλες τις αλλαγές που κάνετε κατά καιρούς κρύβεται κάτω από τον κρυφό ϕάκελο.hg στο ϕάκελο που έχετε δηµιουργήσει το repository σας. Για να το δείτε σε Linux / UNIX / Mac OS X αρκεί να πατήσετε : me@my_pc: /project_folder$ ls -a 22 Λοιπά χαρακτηριστικά και επιπλέον πληροφο- ϱίες Το Mercurial έχει επίσης υποστήριξη και για διαδικτυακά repositories στα οποία µπορεί να έχουµε πρόσβαση είτε µέσω ssh είτε µέσω HTTP. Για παράδειγµα ϑα µπορούσε κάποιος να πάρει ένα αντίγραφο του Mercurial repo: me@my_pc: $ hg clone http://selenic.com/hg/ και µελλοντικά να πάρει τυχόν αλλαγές : me@my_pc: /project_folder$ hg pull http://selenic.com/hg/ ή για παράδειγµα, αν είχε στηθεί ένας ssh server έστω µε διεύθυνση server.com και σαν χρήστης user είχαµε πρόσβαση και κατάλληλα δικαιώµατα για το project που ϐρίσκεται στο ϕάκελο project_folder, τότε ϑα µπορούσαµε να προωθήσουµε τις αλλαγές µας ως εξής : me@my_pc: /my_clone$ hg push ssh://user@server.com/project_folder/ Παρακάτω παρατίθενται κάποια επιπλέον χρήσιµα links: Για µια πιο πλήρη προσέγγιση διαβάστε το Mercurial: The Definitive Guide του Bryan O Sullivan: http://hgbook.red-bean.com/read/ 11

Στη σελίδα http://mercurial.selenic.com/wiki/manpages µπο- ϱείτε να ϐρείτε µία πλήρη συλλογή µε τα απαραίτητα εγχειρίδια χρήσης Για ιστότοπους που προσφέρουν Mercurial hosting απευθυνθείτε εδώ : http: //mercurial.selenic.com/wiki/mercurialhosting 12