Προγραμματισμός

Τι είναι το GitHub; Περισσότερο από τον έλεγχο έκδοσης Git στο cloud

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

Κάτι σαν ιστότοπος κοινωνικής δικτύωσης για προγραμματιστές, το GitHub είναι ένα ανοιχτό περιβάλλον όπου οι προγραμματιστές μπορούν να μοιράζονται και να συνεργάζονται ελεύθερα (ακόμη και ad hoc) σε κώδικα ανοιχτού κώδικα. Το GitHub διευκολύνει την εύρεση χρήσιμου κώδικα, την αντιγραφή αποθετηρίων για δική σας χρήση και την υποβολή αλλαγών σε έργα άλλων. Ως αποτέλεσμα, το GitHub έχει φιλοξενήσει σχεδόν κάθε έργο ανοιχτού κώδικα οποιασδήποτε σημασίας.

Όποτε θέλω να εξερευνήσω ένα έργο ανοιχτού κώδικα, ξεκινά αναζητώντας το όνομα του έργου. Μόλις βρω τον ιστότοπο του έργου, ψάχνω τον σύνδεσμο αποθετηρίου κωδικών του και εννέα φορές από τους 10 καταλήγω στο GitHub.

Έλεγχος έκδοσης Git

Για να καταλάβουμε τι κάνει το GitHub και πώς λειτουργεί το GitHub, πρέπει να καταλάβουμε το Git. Το Git είναι ένα σύστημα ελέγχου κατανεμημένης έκδοσης, που γράφτηκε αρχικά από τον Linus Torvalds το 2005 για και με τη βοήθεια της κοινότητας του πυρήνα Linux. Δεν είμαι εδώ για να σας πουλήσω στο Git, οπότε θα σας αφήσω το άπειρο για το πόσο γρήγορο και μικρό και ευέλικτο και δημοφιλές είναι, αλλά θα πρέπει να γνωρίζετε ότι όταν κλωνοποιείτε ένα αποθετήριο Git ("repo" για συντομία) λαμβάνετε ολόκληρο το ιστορικό εκδόσεων στον υπολογιστή σας, όχι μόνο ένα στιγμιότυπο από έναν κλάδο ταυτόχρονα.

Το Git ξεκίνησε ως εργαλείο γραμμής εντολών, που ταιριάζει στην καταγωγή του στην κοινότητα πυρήνα Linux. Μπορείτε ακόμα να χρησιμοποιήσετε τη γραμμή εντολών Git, αν θέλετε, αλλά δεν χρειάζεται. Αντί ή επιπλέον της γραμμής εντολών, μπορείτε να χρησιμοποιήσετε το δωρεάν πρόγραμμα-πελάτη GitHub σε Windows ή Mac ή σε οποιοδήποτε από τα άλλα GUI για το Git ή σε έναν επεξεργαστή κώδικα που ενσωματώνεται στο Git. Όλες αυτές οι επιλογές είναι αρχικά πιο εύχρηστες από τη γραμμή εντολών. Η γραμμή εντολών Git είναι προεγκατεστημένη στα περισσότερα συστήματα και υποστηρίγματα Mac και Linux όλα λειτουργίες · Τα GUI υποστηρίζουν συνήθως ένα συχνά χρησιμοποιούμενο υποσύνολο λειτουργιών Git.

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

Ένα απομακρυσμένο αποθετήριο Git μπορεί να βρίσκεται σε διακομιστή ή σε υπολογιστή άλλου προγραμματιστή. Αυτό επιτρέπει πολλές πιθανές ροές εργασίας για ομάδες. Μια κοινή ροή εργασίας περιλαμβάνει τη χρήση ενός χώρου αποθήκευσης διακομιστή ως «ευλογημένου» αποθετηρίου, στον οποίο δεσμεύεται μόνο ένας ελεγμένος, καλά δοκιμασμένος κώδικας, συχνά μέσω αίτηση τραβήγματος εκδόθηκε από το αποθετήριο προγραμματιστή.

Λειτουργικότητα GitHub

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

Η τελευταία καινοτομία στην κοινωνική κωδικοποίηση από το GitHub είναι δεσμεύω συν-συγγραφείς, το οποίο επιτυγχάνετε προσθέτοντας ένα ή περισσότερα ρυμουλκούμενα "co-authored-by" στο τέλος ενός μηνύματος δέσμευσης. Αυτός ο μηχανισμός δεν επηρεάζει το repo πυρήνας καθαυτή και δεν αλλάζει την εμφάνιση του repo στο απλό Git, αλλά στο GitHub το χρώμιο θα εμφανίσει πολλούς committer στη λίστα δεσμεύσεων και θα δώσει σε κάθε συν-συγγραφέα πίστωση στο γράφημα συνεισφοράς του.

Εάν το επιθυμείτε, μπορείτε να επεκτείνετε το GitHub χρησιμοποιώντας το GitHub GraphQL API. Αυτή είναι μια σημαντική βελτίωση σε σχέση με το προηγούμενο API του GitHub, το οποίο βασίστηκε σε κλήσεις REST.

GitHub Enterprise

Το GitHub.com είναι μια υπηρεσία φιλοξενίας cloud που μπορεί να χειριστεί μια σειρά τύπων λογαριασμών: δωρεάν (μόνο για repos) και λογαριασμούς προγραμματιστών (7 $ ανά μήνα) επί πληρωμή, ομάδες (9 $ ανά χρήστη ανά μήνα) και επιχειρήσεις (21 $ ανά χρήστη ανά μήνα ). Εάν θέλετε να εκτελέσετε το GitHub Enterprise εσωτερικά ή στο δικό σας στιγμιότυπο cloud σε AWS, Microsoft Azure, Google Cloud Platform ή IBM Cloud, μπορείτε να το κάνετε με την ίδια τιμή 21 $ ανά χρήστη ανά μήνα με τον φιλοξενούμενο επιχειρηματικό λογαριασμό. Το GitHub Enterprise προσθέτει μερικές χρήσιμες λειτουργίες, όπως μηνύματα εντός εφαρμογής σε χρήστες και παροχή πρόσβασης ενσωματωμένη σε καταλόγους LDAP, αλλά παραιτείται από το 99,95% SLA uptime του GitHub.com για φιλοξενούμενους επαγγελματικούς λογαριασμούς.

GitHub εναντίον Bitbucket

Το GitHub δεν είναι η μόνη φιλοξενούμενη βελτιωμένη υπηρεσία Git και το GitHub Enterprise δεν είναι το μόνο προϊόν εσωτερικής εγκατάστασης για εταιρείες. Το Atlassian Bitbucket ανταγωνίζεται και τους δύο, με ελαφρώς χαμηλότερες τιμές και με ένα δωρεάν επίπεδο πενταμελούς ομάδας που περιλαμβάνει απεριόριστα ιδιωτικά repos και τη χρήση των Bitbucket Pipelines για συνεχή ενοποίηση. Το GitHub είναι ένας πιο δημοφιλής ιστότοπος για έργα ανοιχτού κώδικα και διαθέτει μια πολύ μεγαλύτερη ομάδα προγραμματιστών ανοιχτού κώδικα. Η τιμολόγηση του Bitbucket είναι πιο ευνοϊκή για μικρές επιχειρήσεις.

GitHub εναντίον GitLab

Το GitLab ανταγωνίζεται τόσο το GitHub όσο και το Bitbucket, που φιλοξενούνται και εσωτερικά. Στην επιφάνεια, το GitLab φαίνεται να έχει περισσότερη λειτουργικότητα κύκλου ζωής από τα άλλα, αλλά η διαφορά από την Atlassian εξαφανίζεται ως επί το πλείστον εάν συμπεριλάβετε την Jira όταν αξιολογείτε το Bitbucket. Το GitLab προσφέρει λειτουργίες cloud Gold-plan σε έργα ανοιχτού κώδικα, αλλά αυτή η πρόσθετη λειτουργικότητα δεν αντισταθμίζει πραγματικά τη μεγαλύτερη κοινότητα προγραμματιστών ανοιχτού κώδικα στο GitHub.

Επιφάνεια εργασίας GitHub

Η επιφάνεια εργασίας GitHub, που φαίνεται παρακάτω, διευκολύνει τη διαχείριση των αποθετηρίων GitHub.com και GitHub Enterprise. Ενώ δεν εφαρμόζεται όλα τα χαρακτηριστικά της γραμμής εντολών Git και του GitHub web GUI, υλοποιεί όλες τις λειτουργίες που θα κάνετε σε καθημερινή βάση από την επιφάνεια εργασίας σας, ενώ συμβάλλετε σε έργα. Συνήθως, θα κλωνοποιήσετε repos από το GitHub στην επιφάνεια εργασίας GitHub, θα τα συγχρονίσετε όπως απαιτείται, θα δημιουργήσετε κλάδους για την εργασία σας, θα αναλάβετε την εργασία σας και θα επαναφέρετε περιστασιακά μία ή περισσότερες δεσμεύσεις.

Για να εργαστείτε με repos για τα οποία δεν έχετε προνόμια δέσμευσης και συνεργασίας, συνήθως ξεκινάτε πιέζοντας το repo στο GitHub και κλωνοποιώντας το πιρούνι στην επιφάνεια εργασίας σας. Στη συνέχεια, προσθέτετε τυχόν κλάδους που χρειάζεστε στο GitHub Desktop, πραγματοποιήστε τις αλλαγές που θέλετε, δοκιμάστε την εργασία σας, σπρώξτε τις δεσμεύσεις στο απομακρυσμένο διχαλωτό repo σας και, τέλος, δημιουργήστε ένα αίτημα έλξης στο γονικό έργο.

Μπορείτε να δείτε το κουμπί Pull Request στην επάνω δεξιά γωνία της διεπαφής GitHub Desktop. Μπορείτε επίσης να δείτε πολλές δεσμεύσεις στο έργο Neo4j που ήταν συγχωνεύσεις κλάδων ή αιτήματα τραβήγματος. Αυτό είναι χαρακτηριστικό των έργων ανοιχτού κώδικα με λίγους committer και πολλούς συντελεστές.

Πρόγραμμα επεξεργασίας Atom

Μπορείτε να χρησιμοποιήσετε οποιονδήποτε επεξεργαστή προγραμματισμού θέλετε να επεξεργαστείτε κώδικα, συμπεριλαμβανομένου του δωρεάν, ανοιχτού κώδικα, επεξεργαστή Atom του hack του GitHub (φαίνεται παρακάτω), το οποίο ενσωματώνεται καλά με το GitHub και το GitHub Desktop. Μπορείτε να χρησιμοποιήσετε το Atom σε MacOS, Windows ή Linux. Μπορείτε να ανοίξετε το Atom από το GitHub Desktop κάνοντας δεξί κλικ στο αποθετήριο που θέλετε να περιηγηθείτε ή να επεξεργαστείτε.

Το Atom αποστέλλεται με περίπου 90 πακέτα, τέσσερα θέματα διεπαφής χρήστη και οκτώ θέματα σύνταξης. Μπορείτε να προσθέσετε οποιοδήποτε από τα 7.000 πακέτα και 2.000 θέματα στην εγκατάσταση του Atom. Τα πακέτα μπορούν να υποστηρίξουν συγκεκριμένες γλώσσες προγραμματισμού, όπως TypeScript ή να προσθέσουν λειτουργικότητα, όπως το Hydrogen, ένα διαδραστικό περιβάλλον κωδικοποίησης που υποστηρίζει Python, R, JavaScript και άλλους πυρήνες Jupyter.

Το Atom είναι κατασκευασμένο με ενσωμάτωση HTML, JavaScript, CSS και Node.js. Τρέχει στο Electron, ένα πλαίσιο για την κατασκευή εφαρμογών πολλαπλών πλατφορμών χρησιμοποιώντας τεχνολογίες ιστού. Το GitHub Desktop τρέχει επίσης στο Electron.

Έργα GitHub

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

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

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

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

Οι κριτικές κώδικα στο GitHub επιτρέπουν σε μια κατανεμημένη ομάδα να συνεργάζεται ασύγχρονα. Τα χρήσιμα εργαλεία GitHub για αναθεωρητές περιλαμβάνουν διαφορές (το κάτω μισό του παρακάτω στιγμιότυπου οθόνης), το ιστορικό (το πάνω μισό) και την προβολή κατηγοριών (ένας τρόπος για να δείτε την εξέλιξη ενός αρχείου commit by commit). Οι συζητήσεις κώδικα στο GitHub πηγαίνουν σε σχόλια που παρουσιάζονται σύμφωνα με τις αλλαγές κώδικα. Εάν τα ενσωματωμένα εργαλεία δεν επαρκούν για το έργο σας, μπορείτε να προσθέσετε εργαλεία επισκόπησης κώδικα και συνεχούς ενοποίησης από το GitHub marketplace. Τα πρόσθετα του Marketplace είναι συχνά δωρεάν για έργα ανοιχτού κώδικα.

Κύρια σημεία του GitHub

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

Οι δημόσιες λίστες μπορούν να βρεθούν και να βρεθούν σε αναζητήσεις. Μπορείτε να χρησιμοποιήσετε λέξεις-κλειδιά για να περιορίσετε αυτό που βρίσκετε, συμπεριλαμβανομένων προθημάτων για τον περιορισμό των αποτελεσμάτων σε θέματα από συγκεκριμένους χρήστες, θέματα με τουλάχιστον Ν αστέρια, κύστες με συγκεκριμένα ονόματα αρχείων και ούτω καθεξής.

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

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