Κατηγορίες
tech

Το αρχείο ChangeLog στην εποχή του git

Ιστορία

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

Η εποχή του git

Με την χρήση του git και την υποχρεωτική δημιουργία μηνύματος για κάθε υποβολή, οι developers έχουν το πλήρες ιστορικό αλλαγών με μια εντολή της μορφής $ git log --date=short --pretty=format:"%C(auto)%ad %C(yellow)%t %C(auto)%d %C(auto)%s %C(green)(%aN)" και αποφεύγουν να χρησιμοποιούν το αρχείο ChangeLog για αυτή τη δουλειά ώστε να μην κάνουν διπλή δουλειά που είναι επιρρεπής σε ανακρίβειες.

Και επειδή η παραπάνω εντολή είναι αρκετά μεγάλη, μπορούμε να δημιουργήσουμε ένα καθολικό ψευδώνυμο (alias) ώστε να μην χρειάζεται να την θυμόμαστε.
Δημιουργία alias: git config --global alias.mylog 'log --date=short --pretty=format:"%C(auto)%ad %C(yellow)%t %C(auto)%d %C(auto)%s %C(green)(%aN)"'
Χρήση alias: git mylog

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

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

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

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

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

Με την εντολή git shortlog --summary --email φαίνονται τα ονόματα και τα email που συνοδεύουν τις υποβολές.
Ίσως να δούμε κάποια περίεργα, όπως  δύο διαφορετικά ονόματα για τον ίδιο χρήστη ή δύο διαφορετικά email ή ακόμη και email που δεν ισχύουν. Αυτά τα προβλήματα, αν και συνήθως δεν μας επηρεάζουν άμεσα, προσπαθούμε να τα επιλύσουμε γιατί μπορεί να δημιουργήσουν ασάφειες κατά την δημιουργία του αρχείου ChangeLog.