Αποδέσμευση του συστήματος ελέγχου κατανεμημένης πηγής Git 2.26

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

Σε σύγκριση με την προηγούμενη έκδοση, η νέα έκδοση περιελάμβανε 504 αλλαγές, που προετοιμάστηκαν με τη συμμετοχή 64 προγραμματιστών, εκ των οποίων οι 12 συμμετείχαν στην ανάπτυξη για πρώτη φορά. Ο κύριος καινοτομίες:

  • Η προεπιλογή έχει αλλάξει σε δεύτερη έκδοση Πρωτόκολλο επικοινωνίας Git, το οποίο χρησιμοποιείται όταν ένας πελάτης συνδέεται εξ αποστάσεως σε διακομιστή Git. Η δεύτερη έκδοση του πρωτοκόλλου είναι αξιοσημείωτη για την παροχή της δυνατότητας φιλτραρίσματος διακλαδώσεων και ετικετών στην πλευρά του διακομιστή, επιστρέφοντας μια συντομευμένη λίστα συνδέσμων στον πελάτη. Προηγουμένως, οποιαδήποτε εντολή έλξης έστελνε πάντα στον πελάτη την πλήρη λίστα αναφορών σε ολόκληρο το αποθετήριο, ακόμη και όταν ο πελάτης ενημερωνόταν μόνο ένα κλάδο ή έλεγχε ότι το αντίγραφο του αποθετηρίου ήταν ενημερωμένο. Μια άλλη αξιοσημείωτη καινοτομία είναι η δυνατότητα προσθήκης νέων δυνατοτήτων στο πρωτόκολλο καθώς η νέα λειτουργικότητα γίνεται διαθέσιμη στην εργαλειοθήκη. Ο κωδικός πελάτη παραμένει συμβατός με το παλιό πρωτόκολλο και μπορεί να συνεχίσει να λειτουργεί τόσο με νέους όσο και με παλιούς διακομιστές, επιστρέφοντας αυτόματα στην πρώτη έκδοση εάν ο διακομιστής δεν υποστηρίζει τη δεύτερη.
  • Η επιλογή "-show-scope" προστέθηκε στην εντολή "git config", διευκολύνοντας τον εντοπισμό του σημείου όπου ορίζονται ορισμένες ρυθμίσεις. Το Git σάς επιτρέπει να ορίζετε ρυθμίσεις σε διαφορετικά σημεία: στο αποθετήριο (.git/info/config), στον κατάλογο χρήστη (~/.gitconfig), στο αρχείο διαμόρφωσης σε όλο το σύστημα (/etc/gitconfig) και μέσω της εντολής επιλογές γραμμής και μεταβλητές περιβάλλοντος. Κατά την εκτέλεση του "git config" είναι αρκετά δύσκολο να καταλάβουμε πού ακριβώς ορίζεται η επιθυμητή ρύθμιση. Για την επίλυση αυτού του προβλήματος, η επιλογή "--show-origin" ήταν διαθέσιμη, αλλά δείχνει μόνο τη διαδρομή προς το αρχείο στο οποίο έχει οριστεί η ρύθμιση, η οποία είναι χρήσιμη εάν σκοπεύετε να επεξεργαστείτε το αρχείο, αλλά δεν βοηθάει εάν πρέπει να αλλάξετε την τιμή μέσω του "git config" χρησιμοποιώντας τις επιλογές "--system", "--global" ή "-local". Η νέα επιλογή "--show-scope" εμφανίζει το πλαίσιο ορισμού της μεταβλητής και μπορεί να χρησιμοποιηθεί σε συνδυασμό με το -show-origin:

    $ git --list --show-scope --show-origin
    καθολικό αρχείο:/home/user/.gitconfig diff.interhunkcontext=1
    καθολικό αρχείο:/home/user/.gitconfig push.default=current
    […] τοπικό αρχείο:.git/config branch.master.remote=origin
    τοπικό αρχείο:.git/config branch.master.merge=refs/heads/master

    $ git config --show-scope --get-regexp 'diff.*'
    καθολική diff.statgraphwidth 35
    τοπική διαφ.χρωματισμένη πεδιάδα

    $ git config --global --unset diff.statgraphwidth

  • Στις ρυθμίσεις βιβλιοδεσίας διαπιστευτήρια Επιτρέπεται η χρήση μασκών σε διευθύνσεις URL. Οποιεσδήποτε ρυθμίσεις και διαπιστευτήρια HTTP στο Git μπορούν να οριστούν τόσο για όλες τις συνδέσεις (http.extraHeader, credential.helper) όσο και για συνδέσεις που βασίζονται σε URL (credential.https://example.com.helper, credential.https: //example. com.βοηθός). Μέχρι τώρα, χαρακτήρες μπαλαντέρ όπως *.example.com επιτρέπονταν μόνο για ρυθμίσεις HTTP, αλλά δεν υποστηρίζονταν για δέσμευση διαπιστευτηρίων. Στο Git 2.26, αυτές οι διαφορές εξαλείφονται και, για παράδειγμα, για να συνδέσετε ένα όνομα χρήστη σε όλους τους υποτομείς μπορείτε τώρα να καθορίσετε:

    [διαπιστευτήριο "https://*.example.com"]

    όνομα χρήστη = ttaylorr

  • Η επέκταση της πειραματικής υποστήριξης για μερική κλωνοποίηση (μερικοί κλώνοι) συνεχίζεται, επιτρέποντάς σας να μεταφέρετε μόνο μέρος των δεδομένων και να εργαστείτε με ένα ημιτελές αντίγραφο του αποθετηρίου. Η νέα έκδοση προσθέτει μια νέα εντολή "git sparse-checkout add", η οποία σας επιτρέπει να προσθέσετε μεμονωμένους καταλόγους για να εφαρμόσετε τη λειτουργία "checkout" μόνο σε μέρος του δέντρου εργασίας, αντί να παραθέσετε όλους αυτούς τους καταλόγους ταυτόχρονα μέσω της εντολής "git σύνολο αραιής ολοκλήρωσης αγοράς" (μπορείτε να προσθέσετε έναν προς έναν κατάλογο, χωρίς να επαναπροσδιορίζετε ολόκληρη τη λίστα κάθε φορά).
    Για παράδειγμα, για να κλωνοποιήσετε ένα αποθετήριο git/git χωρίς να δεσμεύσετε blobs, να περιορίσετε το checkout μόνο στον ριζικό κατάλογο του αντιγράφου εργασίας και να επισημάνετε ξεχωριστά το checkout για τους καταλόγους "t" και "Documentation", θα μπορούσατε να καθορίσετε:

    $ git clone --filter=blob:none --sparse [προστασία μέσω email]:git/git.git

    $ cd git
    $ git sparse-checkout init --cone

    $ git αραιό checkout προσθέστε t
    ....
    $ git αραιό checkout προσθήκη Τεκμηρίωσης
    ....
    $ git αραιή λίστα ολοκλήρωσης αγοράς
    Απόδειξη με έγγραφα
    t

  • Η απόδοση της εντολής "git grep", που χρησιμοποιείται για την αναζήτηση τόσο του τρέχοντος περιεχομένου του αποθετηρίου όσο και των ιστορικών αναθεωρήσεων, έχει βελτιωθεί σημαντικά. Για να επιταχυνθεί η αναζήτηση, ήταν δυνατή η σάρωση των περιεχομένων του δέντρου εργασίας χρησιμοποιώντας πολλαπλά νήματα ("git grep –threads"), αλλά η αναζήτηση σε ιστορικές αναθεωρήσεις ήταν μονού νήματος. Τώρα αυτός ο περιορισμός έχει αφαιρεθεί με την εφαρμογή της δυνατότητας παραλληλισμού των λειτουργιών ανάγνωσης από την αποθήκευση αντικειμένων. Από προεπιλογή, ο αριθμός των νημάτων ορίζεται ίσος με τον αριθμό των πυρήνων της CPU, κάτι που στις περισσότερες περιπτώσεις τώρα δεν απαιτεί ρητή ρύθμιση της επιλογής "-threads".
  • Προστέθηκε υποστήριξη για αυτόματη συμπλήρωση της εισαγωγής υποεντολών, μονοπατιών, συνδέσμων και άλλων ορισμάτων της εντολής "git worktree", η οποία σας επιτρέπει να εργάζεστε με πολλά αντίγραφα εργασίας του αποθετηρίου.
  • Προστέθηκε υποστήριξη για φωτεινά χρώματα που έχουν ακολουθίες διαφυγής ANSI. Για παράδειγμα, στις ρυθμίσεις για τα χρώματα επισήμανσης «git config –color» ή «git diff –color-moved» μπορείτε να καθορίσετε το «%C(brightblue)» μέσω της επιλογής «--format» για έντονο μπλε.
  • Προστέθηκε νέα έκδοση του σεναρίου fsmonitor-watchman, παρέχοντας ενοποίηση με τον μηχανισμό Φύλακας Facebook για να επιταχύνετε την παρακολούθηση των αλλαγών αρχείων και την εμφάνιση νέων αρχείων. Μετά την ενημέρωση απαιτείται git αντικαταστήστε γάντζο στο αποθετήριο.
  • Προστέθηκαν βελτιστοποιήσεις για την επιτάχυνση των μερικών κλώνων κατά τη χρήση bitmaps
    (μηχανήματα bitmap) για να αποφευχθεί η πλήρης αναζήτηση όλων των αντικειμένων κατά το φιλτράρισμα της εξόδου. Ο έλεγχος για σταγόνες (—filter=blob:none και —filter=blob:limit=n) κατά τη μερική κλωνοποίηση έχει πλέον εκτελεστεί
    σημαντικά πιο γρήγορα. Το GitHub ανακοίνωσε ενημερώσεις κώδικα με αυτές τις βελτιστοποιήσεις και πειραματική υποστήριξη για μερική κλωνοποίηση.

  • Η εντολή "git rebase" έχει μετακινηθεί σε διαφορετικό backend, χρησιμοποιώντας τον προεπιλεγμένο μηχανισμό "συγχώνευσης" (που χρησιμοποιήθηκε προηγουμένως για "rebase -i") αντί για "patch+apply". Τα backend διαφέρουν με κάποιους μικρούς τρόπους, για παράδειγμα, μετά τη συνέχιση μιας λειτουργίας μετά την επίλυση μιας διένεξης (git rebase --continue), το νέο backend προσφέρει την επεξεργασία του μηνύματος δέσμευσης, ενώ το παλιό απλώς χρησιμοποιούσε το παλιό μήνυμα. Για να επιστρέψετε στην παλιά συμπεριφορά, μπορείτε να χρησιμοποιήσετε την επιλογή "--εφαρμογή" ή να ορίσετε τη μεταβλητή διαμόρφωσης "rebase.backend" σε "εφαρμογή".
  • Ένα παράδειγμα ενός προγράμματος χειρισμού για παραμέτρους ελέγχου ταυτότητας που καθορίζονται μέσω του .netrc έχει περιοριστεί σε μια φόρμα κατάλληλη για χρήση εκτός πλαισίου.
  • Προστέθηκε η ρύθμιση gpg.minTrustLevel για να ορίσετε το ελάχιστο επίπεδο εμπιστοσύνης για διάφορα στοιχεία που εκτελούν επαλήθευση ψηφιακής υπογραφής.
  • Προστέθηκε η επιλογή "--pathspec-from-file" στα "git rm" και "git stash".
  • Η βελτίωση των σειρών δοκιμών συνεχίστηκε κατά την προετοιμασία για τη μετάβαση στον αλγόριθμο κατακερματισμού SHA-2 αντί του SHA-1.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο