The King is dead! RIP 2006-2012

Ένα μεγάλο ευχαριστώ σε όλη την παρέα
Περισσότερα στο lexx.gr

Εργαλεία διαχείρισης κώδικα

12 Jun 2009 by PanosJee

Γεια σας μετά από μακρόχρονη απουσία από το Webz, ελπίζω να σας έλειψα λίγο και πιστεύω με την επιστροφή μου να μοιραστώ πολλά από τα πράγματα που έμαθα τελευταία.

Σε αυτό το ποστ θα κάνουμε λόγο για το Source Control ή αλλιώς Revision Control. Όσοι έχετε δουλέψει σαν προγραμματιστές στα πλαίσια μιας ομάδας ίσως να το έχετε ακούσει αν όχι διαβάστε το γιατί θα σας σώσει τη ζωή. Ας υποθέσουμε λοιπόν ότι αποτελείτε μέρος μιας ομάδας προγραμματιστών, σχεδιαστών και δουλεύετε σε διαφορετικά ή τα ίδια μέρη ενός έργου. Πώς συντονίζετε η δουλειά σας; Αν ακόμα στέλνετε τα αρχεία σας ο ένας στον άλλον καιρός να αλλάξετε συνήθειες! Καλώς ήρθατε στον κόσμο του Source Control! Ίσως οι εφαρμογές SVN (Subversion), Git, Mercurial είναι πιο γνωστές; Αν όχι ήρθε η ώρα να τις εντάξετε στο λεξιλόγιο σας μαζί με τις πράξεις που τις ακολουθούν checkout, commit, pull, update, push.

Πολύ πιθανόν να έχετε συναντήσει σε κάποια σουίτα γραφείου την έννοια της έκδοσης. Δηλαδή παλιότερων εκδόσεων, αντιγράφων κάποιου αρχείου σας. Ακριβώς αυτό κάνουν και τα εργαλεία που θα ασχοληθούμε. Κρατούν αντίγραφα των εκδόσεων του κώδικα του κάθε χρήστη αλλά και τα συντονίζουν μεταξύ τους.

Ας αναφερθούμε σε ένα παράδειγμα για να γίνει αντιληπτή η έννοια. Ας πούμε ότι συμμετάσχετε σε ένα νέο project που ξεκίνησαν 2 άτομα. Το project αυτό το συγχρονίζουν μέσω SVN (Subversion). Κάθεστε στον υπολογιστή σας και θέλετε να αποκτείσετε πρόσβαση στον κώδικα. Κάποιος θα σας δημιουργήσει ένα χρήστη που έχει πρόσβαση στο repository. Ενα repository μπορεί να θεωρηθεί η βάση δεδομένων που κρατάει τον πιο πρόσφατο αλλά και τις αλλαγές του project που συγχρονίζεται. Η βασική δομή ενός repository είναι η client-server. Δηλαδή εσείς που θα κάτσετε σε ένα PC να γράψετε είστε ο client . Κάποιο μηχάνημα που βρίσκεται το repository αποτελεί τον server.

Αφού λοιπόν αποφασίσατε να "μπείτε" στο project για να αποκτήσετε το τελευταίο αντίγραφο του κώδικα θα κάνετε ένα checkout από το repository. Μπορείτε πλέον αφού γράψετε νέα αρχεία ή να διορθώσετε υπάρχοντα να ενημερώσετε το repository με τις αλλαγές κάνοντας ένα commit. Κάθε commit δημιουργεί μια νέα έκδοση (revision) του project. Από εδώ και πέρα μπορείτε να είστε πάντα ενημερωμένοι κάνοντας update (from head), να συνεχίσετε από μια έκδοση (revision) του project και να επιλύσετε τυχόν εμπλοκές (conflicts) που μπορούν να παρουσιαστούν αν έχετε επέμβει στο ίδιο κομμάτι κώδικα στο τελευταίο commit ταυτόχρονα με άλλον χρήστη.

Υπάρχουν clients αλλά και servers για όλα τα λειτουργικά συστήματα. Υπάρχουν τόσο clients με γραμμή εντολών αλλά και γραφικά περιβάλλοντα.

Πρώτα όμως θα πρέπει να διαλέξετε ποιο εργαλείο θα χρησιμοποιήσετε τα πιο διαδεδομένα είναι

Αν χρησιμοποιήσετε το πιο διαδεδομένο, δηλαδή το SVN οι επιλογές για client είναι πολλές. Οι πιο γνωστές είναι

Στο επόμενο άρθρο θα μιλήσουμε για hosted repositories, social coding και συμμετοχή σε  open source έργα χάρη στα παραπάνω εργαλεία.