Εργαλεία διαχείρισης κώδικα
Γεια σας μετά από μακρόχρονη απουσία από το Webz, ελπίζω να σας έλειψα λίγο και πιστεύω με την επιστροφή μου να μοιραστώ πολλά από τα πράγματα που έμαθα τελευταία.
Σε αυτό το ποστ θα κάνουμε λόγο για το Source Control ή αλλιώς Revision Control. Όσοι έχετε δουλέψει σαν προγραμματιστές στα πλαίσια μιας ομάδας ίσως να το έχετε ακούσει αν όχι διαβάστε το γιατί θα σας σώσει τη ζωή. Ας υποθέσουμε λοιπόν ότι αποτελείτε μέρος μιας ομάδας προγραμματιστών, σχεδιαστών και δουλεύετε σε διαφορετικά ή τα ίδια μέρη ενός έργου. Πώς συντονίζετε η δουλειά σας; Αν ακόμα στέλνετε τα αρχεία σας ο ένας στον άλλον καιρός να αλλάξετε συνήθειες! Καλώς ήρθατε στον κόσμο του Source Control! Ίσως οι εφαρμογές SVN (Subversion), Git, Mercurial είναι πιο γνωστές; Αν όχι ήρθε η ώρα να τις εντάξετε στο λεξιλόγιο σας μαζί με τις πράξεις που τις ακολουθούν checkout, commit, pull, update, push.
Πολύ πιθανόν να έχετε συναντήσει σε κάποια σουίτα γραφείου την έννοια της έκδοσης. Δηλαδή παλιότερων εκδόσεων, αντιγράφων κάποιου αρχείου σας. Ακριβώς αυτό κάνουν και τα εργαλεία που θα ασχοληθούμε. Κρατούν αντίγραφα των εκδόσεων του κώδικα του κάθε χρήστη αλλά και τα συντονίζουν μεταξύ τους.
[caption id="" align="aligncenter" width="511" caption="How SVN works"]
[/caption]
Ας αναφερθούμε σε ένα παράδειγμα για να γίνει αντιληπτή η έννοια. Ας πούμε ότι συμμετάσχετε σε ένα νέο 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 είναι πολλές. Οι πιο γνωστές είναι
- TortoiseSVN (Windows)
- Cornerstore (Mac)
- Versions (Mac)
Στο επόμενο άρθρο θα μιλήσουμε για hosted repositories, social coding και συμμετοχή σε open source έργα χάρη στα παραπάνω εργαλεία.
Διαβάστηκαν περισσότερο σήμερα
-
01/07/201069 σχόλια
-
01/04/20109 σχόλια
-
12/11/200912 σχόλια
-
11/03/20105 σχόλια
-
07/01/20104 σχόλια
-
16/03/20100 σχόλια
-
23/01/20100 σχόλια
To svn είναι life saver αλλά και λίγο σπαστικό κατά την ανάπτυξη. Great post.
(Ούτε συνενοημένοι να ήμασταν)
καιρός ήταν!
Υπάρχει καμμιά πρόταση για web development στον ίδιο file web server χωρίς να πρέπει να κατεβάζω και να τρέχω το project τοπικά στο μηχάνημά μου ?
Alex has all details ;-)
Δεν είναι και η καλύτερη τακτική αλλά αν θες να κάνεις μικροαλλαγές μπορείς να χρησιμοποιήσεις κάποιον editor πάνω από SSH ή να κάνεις mount το filesystem του server
To πρώτο είναι αρκέτα πιο εύκολο, με Textmate σε Mac είναι piece of cake
Υπάρχει και το bzr. Χρησιμοποιείται από την MySQL, το Linux Foundation, στο Ubuntu και πολλά άλλα projects. Υπάρχει επίσης δωρεάν bzr hosting στο launchpad.net :) Μπορεί να συνεργάζεται με άλλα vcs όπως το svn και git εγκαθιστώντας το κατάλληλο plugins.
Γεια σου Θάνο, ενδιαφέρον φαίνεται το bzr. Για το Kernel χρησιμοποιείται το Git μπορείς να το διαβάσεις από την επίσημη σελίδα http://www.kernel.org/ . Το είχε φτιάξει ο ίδιος ο Linus γιατί είχε τσαντιστεί με τα άλλα και για μια μεγάλη περίοδο χρησιμοποιούσε κάποιο closed source και τον είχανε κράξει λίγο
bzr looks promising, will take a look, thanx !
Δες το Git και μην ξεχνάς το GitHub που θα αναφέρω στο επόμενο ποστ. Social coding!
Πες μας την βασιλική σου γνώμη