Version control ή source control είναι μια ομάδα εργαλείων που χρησιμοποιούνται από web developers για την αποτελεσματική διαχείριση του πηγαίου κώδικα σε projects  όπως είναι ένα mobile app ή μια εφαρμογή web app.

Χρησιμοποιώντας ένα τέτοιο σύστημα υπάρχει η δυνατότητα να αποθηκεύετε το ιστορικό των αλλαγών  του κώδικα και γενικότερα να κάνετε tracking στο τι συμβαίνει στα αρχεία ενός λογισμικού τόσο στη φάση ανάπτυξης αλλά και στη φάση του live production.

Eίναι ιδιαίτερα χρήσιμο όταν αναπτύσετε project λογισμικού στο πλαίσιο μιας ομάδας όπου αποτελείται από δύο ή περισσότερα άτομα, γιατί μπορούν να ενώσουν πολύ εύκολα τα κομμάτια του κώδικα που γράφει ο κάθε software engineer ξεxωριστά.

Με ένα Version Control Software οι developers έχουν την ιστορική εξέλιξη ενός project

Η καρδιά ενός τέτοιος συστήματος είναι να κρατάει τις αλλαγές που γίνονται σε ένα project σε όλη τη διάρκεια της ύπαρξης του. Οπότε οι developers σε τακτικά διαστήματα εισάγουν αλλαγές ή καινούργια κομμάτια κώδικα στο σύστημα και ανά πάσα στιγμή μπορούν να πάνε πίσω στην ιστορία και να κάνουν check-out σε παρελθοντικά χρονικά σημεία.

Ακόμα και αν κάποιος δουλεύει μόνος του και όχι στα πλαισια ομάδα, αν δημιουργηθεί κάποιο πρόβλημα στο λογισμικό ή έχει κάποιο σημαντικό bug μπορείτε πολύ εύκολα να επαναφέρετε σε μία προηγούμενη έκδοση μέχρι να λυθεί το bug.

Διαφορετικοί τύποι λογισμικού διαχείρισης πηγαίου κώδικα

Τρία γνωστά Version Control Software, είναι το Mercurial το οποίο δημιουργήθηκε το 2005 SVN ή αλλιώς Apache Subversion, και το τελευταίο και πιο δημοφιλές είναι το Git

Το subversion ανήκει στην κατηγορία κεντρικών σύστηματων όπου οι developer κάνουν checkout μόνο μικρά κομμάτια των αποθετηρίων για να εργαστούν, από κεντρικούς servers.

Αντίθετα το Git είναι κατανεμημένο σύστημα το οποίο αναπτύχθηκε από τον Linus Torvalds το 2005 για την ανάπτυξη του πηρύνα του Linux. Σε αυτή τη περίπτωση οι προγραμματιστές έχουν ακριβές αντίγραφο όλου του αποθετηρίου - repository στο τοπικό περιβάλλον ανάπτυξης λογισμικού.

Αυτό που επικράτησε ως πιο δημοφιλής τελικά είναι το git ο κύριος λόγος είναι το καθε repository είναι αυτόνομο.

Εισαγωγή στις βασικές εντολές του GIT

Εάν έχουμε εγκαταστήσει το git στο λειτουργικό μας σύστημα για να δημιουργήσουμε ένα κενό repository κάνουμε

git init

Για να προσθούσουμε όλα τα αρχείο από το project μας στη προσωρινή περιοχή (staging area) εκτελούμε

git add .

Για να αποθηκεύσουμε τις αλλαγές στο τοπικό repository

git commit -m "to minimima mou"

Δύο βασικά κλαδιά είναι το master και το develop, αλλά θέλουμε να δημιουργήσουμε ένα χαρακτηριστικό ανεξάρτητα μπορούμε να δημιουργήσουμε καινούργια για να δουλεύψουμε.

git branch "onoma kladiou"

Για να αλλάξουμε κλαδί

git checkout "onoma kladiou"

Τώρα αν βρισκόμαστε στο  branch και υπάρχουν καινούργιες αλλαγές στο master branch μπορούμε να τις ενσωματώσουμε στο κλαδί "onoma kladiou" κάνοντας merge

git merge master

Στη συνέχεια αν υπάρχουν confict

git mergetool

Ενα γνωστό εργαλείο είναι το meld

GIT Hosting

Μπορείτε να έχετε τα remote directories σε δικός σας server έχοντας εγκαταστησει λογισμικό όπως gitlab ή να χρησiμοποιήσετε δημοφιλής υπηρεσίες για αποθετήρια λογισμικού όπως το

  • GitHub
  • BitBucket
  • BeanStalk

Αλλά ειδικά όταν αναπτύσσεται επιχειρηματικό λογισμικό και όχι απλά να κάνετε παραμετροποιήσεις η χρήση του source controls είναι απαραίτητη.

Ένα tip γιατ περίπτωση που γίνει corrupt το τοπικό directory

fatal: loose object 201a213e2db8c8b2d907718af0836aeed32fad95 (stored in .git/objects/20/1a213e2db8c8b2d907718af0836aeed32fad95) is corrupt

find .git/objects/ -size 0 -exec rm -f {} \;
git fetch origin