linux git server

nikolaosv | Κυρ, 09/22/2013 - 01:05 | 5' | 6

Σχετικά πρόσφατα χρειάστηκε να συμμετάσχω σε ένα αρκετά μεγάλο project προγραμματισμού, όπου η χρήση ενός version control system ήταν μονόδρομος. Αποφασίσαμε να χρησιμοποιήσουμε το git για την αποθήκευση των έργων μας πάνω σε δικό μας server. Θεώρησα αναγκαίο να περιγράψω τη διαδικασία αυτή, καθώς η χρήση ενός version control system μπορεί να γλυτώσει τον προγραμματιστή από πολλούς μπελάδες....

Ας δούμε τη διαδικασία αυτή βήμα βήμα.

Το βασικό πακέτο που θα χρησιμοποιήσουμε είναι το git-core το οποίο το εγκαθιστούμε από τον διαχειριστή πακέτων της διανομής μας. π.χ.:

#apt-get install git-core

Στη συνέχεια δημιουργύμε ένα χρήστη git και το φάκελο του για τα ssh κλειδιά με τις ακόλουθες εντολές

$ sudo adduser git
$ su git
$ cd
$ mkdir .ssh

σειρά έχουν τα ssh κλειδιά των χρηστών που θα χρησιμοποιούν το repository. Αυτά τα δημιουργούμε με την εντολή  σε τερματικό

$ssh-keygen

Στη συνέχεια τα εισάγουμε στο server

$ssh-copy-id  -i ~/.ssh/id_rsa.pub ipaddress του server

Ακολουθούμε τα βήματα για να ολοκληρώσουμε τη διαδικασία. Δημιουργούμε ένα νέο repository φροντίζοντας πάντα τα permissions να ανήκουν στο χρήστη git.

$ cd /opt/git
$ mkdir project.git
$ cd project.git
$ git --bare init

Παίρνουμε ως αποτέλεσμα : Initialized empty Git repository in /opt/git/project.git/

Στη συνέχεια πάμε στο eclipse του μηχανηματος που θα κάνουμε τον προγραμματισμό και ανοίγουμε το git repositories perspective από το μενού window->Open perspective. Πατάμε το clone an exsting repository.

Στο παράθυρο που ανοίγει βάζουμε τα στοιχεία της συνδεσής μας, του απομακρυσμένου server και της διαδρομής του αποθετηρίου. Θύρα 22 και επιλέγουμε secure store να μην πληκτρολογούμε κάθε φορά τον κωδικό του git user

και πατάμε επόμενο. Αφού βάλουμε τους κωδικούς για το secure store και ερωτήσεις ανάκτησης συνεχίζουμε.

Μας ειδοποιεί ότι το αποθετήριο είναι άδειο.

και μας ζητάει που θα το αποθηκεύσουμε.

  Όταν ολοκληρωθεί η διαδικασία έχουμε στο μηχάνημα μας ένα τοπικό αποθετήριο.

Για να βάλουμε τώρα ένα έργο λογισμικού στο αποθετήριο, η διαδικασία είναι η εξής:

Δημιουργούμε ένα νέο project και κάνουμε δεξί κλικ πάνω του. Στη συνέχεια πάμε στο team -> share project από το παράθυρο που ανοίγει διαλέγουμε το git και συνεχίζουμε.

Όταν θέλουμε να αποθηκεύσουμε τις αλλαγές κάνουμε δεξί κλίκ στο project ->team->commit

Βάζουμε τιτλο επιλέγουμε τα αρχεία που θέλουμε να αποθηκέυσουμε στο αποθετήριο και πατάμε commit and push

Αυτό ήταν! Ο κώδικας μας είναι στο αποθετήριο.

Φυσικά αυτός είναι ένας τρόπος που μπορεί να συνδεθεί κανείς σε git. Υπάρχουν και άλλοι ίσως καλύτεροι χωρίς τη χρήση του eclipse. Δε φέρω καμία ευθύνη για δυσλειτουργίες και για απώλεια δεδομένων.

Δώσε αστέρια!

MO: 4 (ψήφοι: 1)

Σχόλια

Ωραίος οδηγός.

Κάποιες παρατηρήσεις όμως: 1) Δεν μπορείς να φτιάξεις φάκελο στο /opt/  σαν απλός χρήστης. 2) Πιστεύω οτι αξίζει περισσότερο να το κάνεις στο home directory του git χρήστη. Αν βάλεις σαν home directory του git το /opt/git , και τον δηλώσεις σαν system user, θα δουλέψει ή πρέπει να υπάρχει daemon να τρέχει;

Αξιόλογα συστήματα είναι και τα gitlab , gitorious , gitolite, gitosis . Κάτι παρόμοιο με αυτο που πετυχαίνεις κάνει το gitolite και το gitosis. Τα gitlab και gitorious έχουν και web interface ( στυλ github).

Έχεις δίκιο οτι σαν απλας χρήστης δεν μπορείς να κανεις φάκελο , αλλά μπορείς να δώσεις δικαιώματα στον git user με chown git -R /opt/git ώστε να έχει δικαιώματα εγγραφής ανάγνωσης ;-) Απο τη στιγμή που όλα γίνονται με ssh δε χρειάζεται να τρέχει κάποιος δαίμονας. Συμφωνώ για τα gitorious κλπ, απλα δεν τα έχω δουλέψει ποτέ :-)  Αν θες μπορείς να συμπληρώσεις το άρθρο. Θα χαρώ πολύ να γίνει ένας ολοκληρωμένος οδηγός git server :-) 

 

Ωραίος οδηγός, αλλά βρε παιδί μου δεν γίνεται να βάλεις λίγο μεγαλύτερα screenshots ?

dimitris]

Ωραίος οδηγός, αλλά βρε παιδί μου δεν γίνεται να βάλεις λίγο μεγαλύτερα screenshots ?

Έγινε! smiley

Ωραίος. Εκανα λίγο edit για να βγάλω τις κενές γραμμές που είχαν μείνει ανάμεσα στις παραγράφους. Τους βάζει το plugin για το syntax highlighting... :(

Καλά έκανες... Τα έσβησα πολλές φορές αλλά στο τέλος τα άφησα ως έχουν.