Git
Chapters ▾ 2nd Edition

6.3 GitHub - Συντήρηση ενός έργου

Συντήρηση ενός έργου

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

Δημιουργία νέου αποθετηρίου

Ας δημιουργήσουμε ένα νέο αποθετήριο για να μοιραστούμε τον κώδικα του έργου μας. Ξεκινάμε κάνοντας κλικ στο κουμπί “New repository” στη δεξιά πλευρά του ταμπλό ή στο κουμπί “+” στην επάνω γραμμή εργαλείων δίπλα στο όνομα χρήστη μας όπως φαίνεται στην εικόνα Η αναπτυσσόμενη λίστα “New repository”..

Η περιοχή ``Your repositories''.
Figure 110. Η περιοχή “Your repositories”
Η αναπτυσσόμενη λίστα ``New repository''.
Figure 111. Η αναπτυσσόμενη λίστα “New repository”.

Αυτό μας μεταφέρει στη φόρμα “Νew repository”:

Η φόρμα ``New repository''.
Figure 112. Η φόρμα “New repository”.

Το μόνο που έχουμε να κάνουμε εδώ είναι να δώσουμε ένα όνομα έργου. Τα υπόλοιπα πεδία είναι εντελώς προαιρετικά. Προς το παρόν, απλά κάνουμε κλικ στο κουμπί “Create Repository” και αμέσως έχουμε ένα νέο αποθετήριο στο GitHub, το οποίο ονομάζεται <χρήστης>/<όνομα_έργου>.

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

Τώρα που το έργο μας φιλοξενείται στο GitHub, μπορούμε να δώσουμε τη διεύθυνση URL σε οποιονδήποτε θέλουμε να μοιραστούμε το έργο μας. Κάθε έργο στο GitHub είναι προσβάσιμο μέσω HTTP στη διεύθυνση https://github.com/<χρήστης>/<όνομα_έργου>, και μέσω SSH ως git@github.com:<χρήστης>/<όνομα_έργου>. Το Git μπορεί να ανακτήσει από και να ωθήσει προς και τις δύο αυτές διευθύνσεις URL, αλλά η πρόσβαση ταυτοποιείται με βάση τα διαπιστευτήρια του χρήστη που συνδέεται σε αυτές.

Note

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

Προσθήκη συνεργατών

Εάν εργαζόμαστε με άλλα άτομα στα οποία θέλουμε να επιτρέψουμε την πρόσβαση, πρέπει να τα προσθέσουμε ως “συνεργάτες” (collaborators). Αν ο Ben, ο Jeff και η Louise έχουν λογαριασμούς στο GitHub και θέλουμε να τους δώσουμε δικαίωμα ώθησης στο αποθετήριό μας, μπορούμε να τους προσθέσουμε στο έργο μας. Κάτι τέτοιο θα τους δώσει πρόσβαση ώθησης, που σημαίνει ότι έχουν δικαίωμα τόσο ανάγνωσης όσο και εγγραφής στο έργο και στο αποθετήριο Git.

Κάνουμε κλικ στον σύνδεσμο “Settings” στο κάτω μέρος της δεξιάς πλευρικής μπάρας.

Ο σύνδεσμος ``Settings'' του αποθετηρίου.
Figure 113. Ο σύνδεσμος “Settings” του αποθετηρίου.

Στη συνέχεια επιλέγουμε “Collaborators” από το μενού στα αριστερά. Μετά πληκτρολογούμε ένα όνομα χρήστη στο πλαίσιο και κάνουμε κλικ στο κουμπί “Add collaborator”. Μπορούμε να επαναλάβουμε αυτήν τη διαδικασία όσες φορές θέλουμε ώστε να δώσουμε πρόσβαση σε όποιον θέλουμε. Αν χρειαστεί να ανακαλέσουμε την πρόσβαση κάποιου χρήστη, απλά κάνουμεε κλικ στο “×” στα δεξιά της σειράς του.

Το πλαίσιο με τους συνεργάτες του αποθετηρίου.
Figure 114. Το πλαίσιο με τους συνεργάτες του αποθετηρίου.

Διαχείριση αιτημάτων έλξης

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

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

Για αυτά τα παραδείγματα, ας υποθέσουμε ότι είμαστε ο tonychacon και έχουμε δημιουργήσει ένα νέο έργο με κώδικα Arduino που ονομάζεται fade.

Ειδοποιήσεις e-mail

Κάποιος κάνει μια αλλαγή στον κώδικά μας και μας στέλνει ένα αίτημα έλξης. Θα πρέπει να λάβουμε ένα μήνυμα e-mail που μας ειδοποιεί για το νέο αίτημα έλξης που θα μοιάζει σαν αυτό της εικόνας Ειδοποίηση email για νέο αίτημα έλξης.

Ειδοποίηση email για νέο αίτημα έλξης.
Figure 115. Ειδοποίηση email για νέο αίτημα έλξης.

Σε αυτό το μήνυμα e-mail παρατηρούμε τα εξής. Μας δίνει ένα μικρό diffstat —μια λίστα των αρχείων που έχουν αλλάξει στο αίτημα έλξης και κατά πόσο έχουν αλλάξει. Mας δίνει ένα σύνδεσμο προς το αίτημα έλξης στο GitHub. Mας δίνει επίσης μερικές διευθύνσεις URL που μπορούμε να χρησιμοποιήσουμε από τη γραμμή εντολών.

Η γραμμή που λέει git pull <url> patch-1, είναι ένας απλός τρόπος για να συγχωνεύσουμε έναν απομακρυσμένο κλάδο χωρίς να χρειάζεται να προσθέσουμε ένα απομακρυσμένο αποθετήριο. Αυτό το είδαμε αυτό εν συντομία στην ενότητα Checking Out απομακρυσμένους κλάδους. Αν θέλουμε, μπορούμε να δημιουργήσουμε έναν θεματικό κλάδο, να μεταβούμε σε αυτόν και στη συνέχεια να εκτελέσουμε αυτήν την εντολή για να συγχωνεύσουμε τις αλλαγές του αιτήματος έλξης.

Οι άλλες ενδιαφέρουσες διευθύνσεις URL είναι οι διευθύνσεις .diff και .patch, οι οποίες, όπως μπορεί να μαντέψει κανείς, παρέχουν ενοποιημένες εκδόσεις της diff και του επιθέματος του αιτήματος έλξης. Θα μπορούσαμε να συγχωνεύσουμε την εργασία του αιτήματος έλξης με κάτι σαν αυτό:

$ curl http://github.com/tonychacon/fade/pull/1.patch | git am

Συνεργασία σε αίτημα έλξης

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

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

Απάντηση e-mail.
Figure 116. Οι απαντήσεις στα e-mails περιλαμβάνονται στο νήμα συζήτησης.

Μόλις ο κώδικας βρίσκεται σε μία κατάσταση που μας αρέσει και θέλουμε να τον συγχωνεύσουμε, μπορούμε είτε να έλξουμε τον κώδικα και να τον συγχωνεύσουμε τοπικά, είτε με τη σύνταξη git pull <url> <κλάδος> που είδαμε προηγουμένως, είτε προσθέτοντας τη διχάλα ως απομακρυσμένο αποθετήριο και ανακτώντας και συγχωνεύοντας.

Εάν η συγχώνευση είναι τετριμμένη, μπορούμε επίσης να πατήσουμε το κουμπί “Merge” στην τοποθεσία GitHub. Αυτό θα κάνει μια συγχώνευση “μη-ταχυπροώθησης”, δημιουργώντας μια υποβολή συγχώνευσης ακόμα και αν ήταν δυνατή μια συγχώνευση ταχυπροώθησης. Αυτό σημαίνει ότι όπως και νά 'χει, κάθε φορά που πατάμε το κουμπί συγχώνευσης, δημιουργείται μια υποβολή συγχώνευσης. Όπως μπορούμε να δούμε στην εικόνα Κουμπί “Merge” και οδηγίες για συγχώνευση αιτήματος έλξης, το GitHub μας δίνει όλες αυτές τις πληροφορίες εάν κάνουμε κλικ στον σύνδεσμο “hint”.

Κουμπί ``Merge'' και οδηγίες για συγχώνευση αιτήματος έλξης
Figure 117. Κουμπί “Merge” και οδηγίες για συγχώνευση αιτήματος έλξης

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

Refs αιτημάτων έλξης

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

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

Για να το δείξουμε αυτό, θα χρησιμοποιήσουμε μια εντολή χαμηλού επιπέδου (που συχνά αναφέρεται ως εντολή “διοχέτευσης” (plumbing), την ls-remote, για την οποία θα πούμε περισσότερα στην ενότητα Διοχετεύσεις και πορσελάνες). Αυτή η εντολή γενικά δεν χρησιμοποιείται στις καθημερινές λειτουργίες του Git, αλλά μας χρησιμεύει να δούμε ποιες αναφορές υπάρχουν στον διακομιστή.

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

$ git ls-remote https://github.com/schacon/blink
10d539600d86723087810ec636870a504f4fee4d	HEAD
10d539600d86723087810ec636870a504f4fee4d	refs/heads/master
6a83107c62950be9453aac297bb0193fd743cd6e	refs/pull/1/head
afe83c2d1a70674c9505cc1d8b7d380d5e076ed3	refs/pull/1/merge
3c8d735ee16296c242be7a9742ebfbc2665adec1	refs/pull/2/head
15c9f4f80973a2758462ab2066b6ad9fe8dcf03d	refs/pull/2/merge
a5a7751a33b7e86c5e9bb07b26001bb17d775d1a	refs/pull/4/head
31a45fc257e8433c8d8804e3e848cf61c9d3166c	refs/pull/4/merge

Φυσικά, εάν βρισκόμαστε στο δικό μας αποθετήριο και εκτελέσουμε git ls-remote origin ή οποιοδήποτε απομακρυσμένο αποθετήριο θέλουμε να ελέγξουμε, θα μας δείξει κάτι παρόμοιο με αυτό.

Αν το αποθετήριο βρίσκεται στο GitHub και έχουμε υποβεβλημένα αίτηματα έλξης, θα λάβουμε αυτές τις αναφορές, με πρόθεμα refs/pull/. Αυτές είναι ουσιαστικά κλάδοι, αλλά επειδή δεν βρίσκονται στον refs/heads/, δεν τις παίρνουμε όταν κλωνοποιούμε ή ανακτούμε από τον διακομιστή —κάτω από κανονικές συνθήκες η διαδικασία της ανάκτησης τούς αγνοεί.

Υπάρχουν δύο αναφορές ανά αίτημα έλξης —αυτή που τελειώνει σε /head δείχνει στην ίδια ακριβώς υποβολή με την τελευταία υποβολή στον κλάδο του αιτήματος έλξης. Έτσι, αν κάποιος υποβάλει ένα αίτημα έλξης στο αποθετήριό μας και ο κλάδος του ονομάζεται bug-fix και δείχνει στην υποβολή a5a775, τότε στο δικό μας αποθετήριο δεν θα έχουμε κλάδο bug-fix ' (αφού αυτός βρίσκεται στη δική του διχάλα), αλλά θα έχουμε `pull/<αε#>/head που δείχνει στην a5a775. Αυτό σημαίνει ότι μπορούμε πολύ εύκολα να έλξουμε κάθε κλάδο ενός αιτήματος έλξης χωρίς να χρειαστεί να προσθέσουμε κάμποσα απομακρυσμένα αποθετήρια.

Τώρα, μπορούμε να ανακτήσουμε απευθείας την αναφορά.

$ git fetch origin refs/pull/958/head
From https://github.com/libgit2/libgit2
 * branch            refs/pull/958/head -> FETCH_HEAD

Αυτό λέει στο Git, “συνδέσου στο απομακρυσμένο αποθετήριο origin και κατέβασε το ref με όνομα refs/pull/958/head”. Το Git υπακούει και κατεβάζει ό,τι χρειαζόμαστε για να κατασκευάσουμε αυτό το ref και βάζει έναν δείκτη στην υποβολή που θέλουμε στο αρχείο .git/FETCH_HEAD. Μπορούμε να τη συγχωνεύσουμε με την εντολή git merge FETCH_HEAD σε έναν κλάδο στον οποίο θέλουμε να το δοκιμάσουμε, αλλά αυτό το μήνυμα συγχώνευσης φαίνεται λίγο παράξενο. Επίσης, εάν εξετάζουμε πολλά αιτήματα έλξης, κάτι τέτοιο γίνεται κουραστικό.

Υπάρχει επίσης ένας τρόπος για να ανακτήσουμε όλα τα αιτήματα έλξης και να τα κρατάμε ενημερωμένα κάθε φορά που συνδεόμαστε στο απομακρυσμένο αποθετήριο. Ανοίγουμε το .git/config στον αγαπημένο μας επεξεργαστή κειμένου και αναζητούμε το απομακρυσμένο αποθετήριο origin. Θα πρέπει να μοιάζει κάπως έτσι:

[remote "origin"]
    url = https://github.com/libgit2/libgit2
    fetch = +refs/heads/*:refs/remotes/origin/*

Αυτή η γραμμή που αρχίζει με fetch = είναι ένα “refspec”. Είναι ένας τρόπος απεικόνισης ονομάτων του απομακρυσμένου αποθετηρίου με ονόματα στον τοπικό μας κατάλογο .git. Αυτό το συγκεκριμένο λέει στο Git, “τα πράγματα στο απομακρυσμένο αποθετήριο που βρίσκονται κάτω από το refs/heads θα πρέπει να πάνε στο τοπικό μου αποθετήριο κάτω από το refs/remotes/origin.” Μπορούμε να τροποποιήσουμε αυτό το τμήμα ώστε να προσθέσουμε ένα ακόμα refspec:

[remote "origin"]
    url = https://github.com/libgit2/libgit2.git
    fetch = +refs/heads/*:refs/remotes/origin/*
    fetch = +refs/pull/*/head:refs/remotes/origin/pr/*

Αυτή η τελευταία γραμμή λέει στο Git, “Όλα τα refs που μοιάζουν με το refs/pull/123/head θα πρέπει να αποθηκεύονται τοπικά όπως το refs/remotes/origin/pr/123”. Τώρα αν αποθηκεύσουμε αυτό το αρχείο και εκτελέσουμε την git fetch, παίρνουμε:

$ git fetch
# …
 * [new ref]         refs/pull/1/head -> origin/pr/1
 * [new ref]         refs/pull/2/head -> origin/pr/2
 * [new ref]         refs/pull/4/head -> origin/pr/4
# …

Τώρα όλα τα απομακρυσμένα αιτήματα έλξης αναπαριστώνται τοπικά με αναφορές που λειτουργούν σαν παρακολουθούμενοι κλάδων· είναι μόνο για ανάγνωση και ενημερώνονται όταν κάνουμε fetch. Αυτό καθιστά πανεύκολο το να δοκιμάσουμε τον κώδικα από ένα αίτημα έλξης σε τοπικό επίπεδο:

$ git checkout pr/2
Checking out files: 100% (3769/3769), done.
Branch pr/2 set up to track remote branch pr/2 from origin.
Switched to a new branch 'pr/2'

Αν είστει εξαιρετικά παρατηρητικοί, θα έχετε εντοπίσει το head στο τέλος του απομακρυσμένου τμήματος του refspec. Υπάρχει επίσης ένας σύνδεσμος refs/pull/#/merge στην πλευρά του GitHub, που αντιπροσωπεύει την υποβολή που θα προκύψει αν πατήσουμε το κουμπί “Merge”. Αυτό μπορεί να μας επιτρέψει να δοκιμάσουμε τη συγχώνευση ακόμη και πριν πατήσουμε το κουμπί.

Αιτήματα έλξης σε αιτήματα έλξης

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

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

Όταν πάμε να υποβάλουμε ένα αίτημα έλξης, υπάρχει ένα πλαίσιο στο επάνω μέρος της σελίδας που καθορίζει από ποιον και προς ποιον κλάδο αιτούμαστε να έλξουμε. Αν πατήσουμε το κουμπί “Edit” στα δεξιά του πλαισίου μπορούμε να αλλάξουμε όχι μόνο τους κλάδους αλλά και τη διχάλα.

Χειροκίνητη αλλαγή της διχάλας και κλάδου σε αίτημα έλξης.
Figure 118. Χειροκίνητη αλλαγή της διχάλας και κλάδου σε αίτημα έλξης.

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

Μνείες και ειδοποιήσεις

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

Σε οποιοδήποτε σχόλιο αν αρχίσουμε να πληκτρολογούμε έναν χαρακτήρα @ θα αρχίσει να συμπληρώνεται αυτόματα με τα ονόματα και τα ονόματα χρήστη των ατόμων που συνεργάζονται ή συνεισφέρουν στο έργο.

Μνείες
Figure 119. Πληκτρολογούμε @ για να μνημονεύσουμε κάποιον.

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

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

Εάν κάποιος μνημονευτεί σε ένα αίτημα έλξης ή ζήτημα, θα γίνει “συνδρομητής” σε αυτό και θα συνεχίσει να λαμβάνει ειδοποιήσεις οποιαδήποτε στιγμή κάποια δραστηριότητα συμβαίνει σε αυτό. Θα είμαστε επίσης συνδρομητές σε κάτι αν το ανοίξουμε, εάν παρακολουθούμε το αποθετήριο ή σχολιάσουμε κάτι. Αν δεν θέλουμε πλέον να λαμβάνουμε ειδοποιήσεις, υπάρχει ένα κουμπί “Unsubscribe” στη σελίδα που μπορούμε να κάνουμε κλικ για να σταματήσουμε να λαμβάνουμε ενημερώσεις σχετικά με αυτό.

Διαγραφή από λίστα ενημερώσεων για ζήτημα ή αίτημα έλξης.
Figure 120. Διαγραφή από λίστα ενημερώσεων για ένα ζήτημα ή αίτημα έλξης.

Η σελίδα των ειδοποιήσεων

Όταν λέμε “ειδοποιήσεις” εδώ σε σχέση με το GitHub, εννοούμε έναν συγκεκριμένο τρόπο με τον οποίο το GitHub προσπαθεί να έρθει σε επαφή μαζί μας όταν συμβαίνουν κάτι και υπάρχουν διάφοροι τρόποι με τους οποίους μπορούμε να τις διαμορφώσουμε. Αν μεταβούμε στην καρτέλα “Notification center” από τη σελίδα ρυθμίσεων, μπορούμε να δούμε μερικές από τις επιλογές που έχουμε.

Επιλογές κέντρου ειδοποιήσεων.
Figure 121. Επιλογές κέντρου ειδοποιήσεων.

Οι δύο επιλογές είναι να λαμβάνουμε ειδοποιήσεις σχετικά μέσω “Email” και μέσω “Web” και μπορούμε να επιλέξουμε είτε μία από τις δύο, καμία από τις δύο ή και τις δύο όταν συμμετέχουμε ενεργά σε ό,τι συμβαίνει ή για δραστηριότητες στα αποθετήρια που παρακολουθούμε.

Ειδοποιήσεις μέσω web

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

Κέντρο ειδοποιήσεων.
Figure 122. Κέντρο ειδοποιήσεων.

Εάν κάνουμε κλικ σ' αυτό, θα δούμε μια λίστα με όλα τα στοιχεία για τα οποία έχουμε ειδοποιηθεί, ομαδοποιημένα κατά έργο. Μπορούμε να φιλτράρουμε τις ειδοποιήσεις ενός συγκεκριμένου έργου κάνοντας κλικ στο όνομά του στην αριστερή πλευρική μπάρα. Μπορούμε επίσης να επιβεβαιώσουμε τη λήψη της ειδοποίησης κάνοντας κλικ στο εικονίδιο tick δίπλα σε οποιαδήποτε ειδοποίηση ή να επιβεβαιώσουμε τη λήψη όλων των ειδοποιήσεων σε ένα έργο κάνοντας κλικ στο εικονίδιο tick στο πάνω μέρος της ομάδας. Υπάρχει επίσης ένα κουμπί σίγασης δίπλα σε κάθε σημάδι επιλογής στο οποίο μπορούμε να κάνουμε κλικ για να μην λαμβάνουμε άλλες ειδοποιήσεις σχετικά με το συγκεκριμένο στοιχείο.

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

Ειδοποιήσεις μέσω e-mail

Οι ειδοποιήσεις μέσω e-mail είναι ο άλλος τρόπος με τον οποίο μπορούμε να χειριστούμε τις ειδοποιήσεις μέσα από το GitHub. Εάν έχουμε ενεργοποιήσει αυτήν τη λειτουργία, θα λαμβάνουμε μηνύματα e-mail για κάθε ειδοποίηση. Είδαμε παραδείγματα αυτής της λειτουργίας στην ενότητα Σχόλια που στέλνονται ως email. και την εικόνα Ειδοποίηση email για νέο αίτημα έλξης.. Τα μηνύματα e-mail επίσης θα ταξινομούντα κατά νήμα, κάτι πολύ χρήσιμο εφόσον χρησιμοποιούμε ένα πρόγραμμα e-mail που υποστηρίζει τα νήματα.

Υπάρχει επίσης μία σημαντική ποσότητα μεταδεδομένων ενσωματωμένων στις κεφαλίδες των μηνυμάτων e-mail που μας στέλνει το GitHub, κάτι που μπορεί να είναι πραγματικά χρήσιμο για τη δημιουργία προσαρμοσμένων φίλτρων και κανόνων.

Για παράδειγμα, αν κοιτάξουμε τις πραγματικές κεφαλίδες e-mail που αποστέλλονται στον Tony στο e-mail που εμφανίζεται στην εικόνα Ειδοποίηση email για νέο αίτημα έλξης., θα δούμε τα παρακάτω μεταξύ των πληροφοριών που στάλθηκαν:

To: tonychacon/fade <fade@noreply.github.com>
Message-ID: <tonychacon/fade/pull/1@github.com>
Subject: [fade] Wait longer to see the dimming effect better (#1)
X-GitHub-Recipient: tonychacon
List-ID: tonychacon/fade <fade.tonychacon.github.com>
List-Archive: https://github.com/tonychacon/fade
List-Post: <mailto:reply+i-4XXX@reply.github.com>
List-Unsubscribe: <mailto:unsub+i-XXX@reply.github.com>,...
X-GitHub-Recipient-Address: tchacon@example.com

Υπάρχουν μερικά ενδιαφέροντα πραγματάκια εδώ. Εάν θέλουμε να επισημάνουμε ή να επαναπροωθήσουμε τα μηνύματα e-mail σε αυτό το συγκεκριμένο έργο ή ακόμα και το αίτημα έλξης, οι πληροφορίες στο "Message-ID" μάς παρέχουν όλα τα δεδομένα στη μορφή <χρήστης>/<έργο>/<τύπος>. Αν αυτό ήταν ένα ζήτημα, για παράδειγμα, το πεδίο <τύπος> θα έλεγε issues αντί για pull.

Τα πεδία List-Post και` List-Unsubscribe` σημαίνουν ότι αν έχουμε ένα πρόγραμμα e-mail που τα καταλαβαίνει, μπορούμε εύκολα να αναρτήσουμε στη λίστα ή να διαγραφούμε από το νήμα. Αυτό θα ήταν ουσιαστικά το ίδιο με το κλικ στο κουμπί “Mute” στη διαδικτυακή μορφή της ειδοποίησης ή “Unsubscribe” στη σελίδα ζητημάτων ή αιτημάτων έλξης.

Αξίζει επίσης να σημειωθεί ότι εάν έχουμε ενεργοποιήσει και τις δύο μορφές ειδοποιήσεων (e-mail και ιστού) και διαβάσουμε την έκδοση e-mail της ειδοποίησης, η ειδοποίηση ιστού θα επισημανθεί ως αναγνωσμένη (εφόσον επιτρέπουμε εικόνες στο πρόγραμμα e-mail μας).

Ειδικά αρχεία

Υπάρχουν μερικά ειδικά αρχεία τα οποία θα παρατηρήσει το GitHub εάν υπάρχουν στο αποθετήριό μας.

Αρχείο README

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

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

  • Σε τι αφορά το έργο

  • Πώς να το ρυθμίσουμε και εγκαταστήσουμε

  • Ένα παράδειγμα για το πώς να το χρησιμοποιήσουμε ή να το τρέξουμε

  • Η άδεια χρήσης του έργου

  • Πώς να συμβάλλουμε σε αυτό

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

Αρχείο CONTRIBUTING

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

Ειδοποίηση συνεισφοράς.
Figure 123. Υποβολή αιτήματος έλξης όταν υπάρχει αρχείο CONTRIBUTING

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

Διαχείριση έργων

Γενικά, δεν υπάρχουν πολλά διαχειριστικά πράγματα που μπορούμε να κάνουμε με ένα μόνο έργο, αλλά υπάρχουν μερικά στοιχεία που μπορεί να ενδιαφέρουν.

Αλλαγή του προεπιλεγμένου κλάδου

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

Προεπιλεγμένος κλάδος.
Figure 124. Αλλαγή του προεπιλεγμένου κλάδου για ένα έργο.

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

Μεταβίβαση έργου

Εάν θέλουμε να μεταβιβάσουμε ένα έργο σε άλλον χρήστη ή οργανισμό στο GitHub, υπάρχει μια επιλογή “Transfer ownership” στο κάτω μέρος της καρτέλας “Options” της σελίδας ρυθμίσεων του αποθετηρίου που μας επιτρέπει να το κάνουμε.

Μεταβίβαση έργου.
Figure 125. Μεταβίβαση έργου σε άλλον χρήστη ή οργάνωση του GitHub.

Αυτό είναι χρήσιμο εάν εγκαταλείπουμε ένα έργο και κάποιος θέλει να το αναλάβει ή εάν το έργο μας μεγαλώνει και θέλουμε να το μεταβιβάσουμε σε κάποιον οργανισμό.

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