Git
Chapters ▾ 2nd Edition

A2.1 Appendix B: Ενσωμάτωση του Git στις εφαρμογές μας - Γραμμή εντολών Git

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

Εάν χρειάζεται να ενσωματώσουμε το Git με την εφαρμογή μας, έχουμε ουσιαστικά τρεις επιλογές: α) εκκίνηση κελύφους και χρήση του εργαλείου γραμμής εντολών Git, β) το Libgit2 και γ) το JGit.

Γραμμή εντολών Git

Μια επιλογή είναι να εκκινήσει μια διαδικασία κελύφους και να χρησιμοποιηθεί η γραμμή εντολών του Git για να κάνει τη δουλειά. Αυτό έχει το πλεονέκτημα ότι είναι σύμφωνο με τον κανόνα και υποστηρίζονται όλες οι λειτουργίες του Git. Αυτό συμβαίνει επίσης να είναι αρκετά εύκολο, καθώς τα περισσότερα περιβάλλοντα εκτέλεσης (runtime environments) έχουν μία σχετικά απλή δυνατότητα για την επίκληση μιας διαδικασίας με ορίσματα γραμμής εντολών. Ωστόσο, αυτή η προσέγγιση έχει κάποια μειονεκτήματα.

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

Ένα άλλο είναι η έλλειψη ανάκτησης σφαλμάτων. Εάν ένα αποθετήριο είναι παρεφθαρμένο κατά κάποιο τρόπο ή ο χρήστης έχει μια μη-έγκυρη τιμή διαμόρφωσης, το Git απλά θα αρνηθεί να εκτελέσει πολλές λειτουργίες.

Ένα ακόμα είναι η διαχείριση της διαδικασίας. Το Git απαιτεί να διατηρούμε ένα περιβάλλον κελύφους ως ξεχωριστή διαδικασία, κάτι που μπορεί να προσθέσει ανεπιθύμητη πολυπλοκότητα. Η προσπάθεια συντονισμού πολλών από αυτές τις διεργασίες (ειδικά όταν δυνητικά έχουμε πρόσβαση στο ίδιο αποθετήριο από διάφορες διεργασίες) μπορεί να είναι μια μεγάλη πρόκληση.