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

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

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

  • Προστέθηκε η εντολή "git maintenance", η οποία σας επιτρέπει να εκτελείτε περιοδικές εργασίες σε συστήματα που δεν υποστηρίζουν το cron. Για παράδειγμα, χρησιμοποιώντας μια νέα εντολή, μπορείτε να κανονίσετε να εκτελείται περιοδικά η διαδικασία συσκευασίας του αποθετηρίου, έτσι ώστε να μην χρειάζεται να περιμένετε μέχρι να κλειδωθεί το αποθετήριο όταν εκτελείται αυτόματα η συσκευασία κατά την εκτέλεση διαφόρων εντολών. Η εντολή "git maintenance" σάς επιτρέπει να εκτελείτε βελτιστοποιήσεις και λειτουργίες για να διατηρήσετε τη βέλτιστη δομή του αποθετηρίου στο παρασκήνιο, χωρίς να μπλοκάρετε τη διαδραστική περίοδο λειτουργίας - μία φορά την ώρα, γίνεται εργασία για την προληπτική λήψη νέων αντικειμένων από το απομακρυσμένο αποθετήριο και την ενημέρωση του αρχείο με το γράφημα δέσμευσης και η διαδικασία συσκευασίας του αποθετηρίου ξεκινά κάθε βράδυ .
  • Προστέθηκε υποστήριξη για τη διατήρηση ενός αντίστροφου ευρετηρίου (revindex) στο δίσκο για αρχεία πακέτων. Θυμηθείτε ότι το Git αποθηκεύει όλα τα δεδομένα με τη μορφή αντικειμένων, τα οποία βρίσκονται σε ξεχωριστά αρχεία. Για να αυξηθεί η αποτελεσματικότητα της εργασίας με το αποθετήριο, τα αντικείμενα τοποθετούνται επιπλέον σε αρχεία pack, στα οποία οι πληροφορίες παρουσιάζονται με τη μορφή μιας ροής αντικειμένων που ακολουθούν το ένα το άλλο (μια παρόμοια μορφή χρησιμοποιείται κατά τη μεταφορά αντικειμένων με το git fetch και το git push εντολές). Για κάθε αρχείο πακέτου, δημιουργείται ένα αρχείο ευρετηρίου (.idx), το οποίο σας επιτρέπει να προσδιορίσετε πολύ γρήγορα τη μετατόπιση στο αρχείο πακέτου στο οποίο αποθηκεύεται το δεδομένο αντικείμενο χρησιμοποιώντας το αναγνωριστικό αντικειμένου. Το αντίστροφο ευρετήριο (.rev) που εισήχθη στο Git 2.31 στοχεύει στη βελτιστοποίηση της διαδικασίας προσδιορισμού ενός αναγνωριστικού αντικειμένου από πληροφορίες σχετικά με την τοποθέτηση ενός αντικειμένου σε ένα αρχείο πακέτου.

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

    Για παράδειγμα, μια λειτουργία εμφάνισης των περιεχομένων αντικειμένων, η οποία χρησιμοποιεί άμεσο ευρετήριο, ήταν 62 φορές ταχύτερη από μια λειτουργία εμφάνισης του μεγέθους των αντικειμένων, για τα οποία τα δεδομένα θέσης σε αντικείμενο δεν είχαν ευρετηριαστεί. Μετά τη χρήση του αντίστροφου δείκτη, αυτές οι λειτουργίες άρχισαν να διαρκούν περίπου τον ίδιο χρόνο. Τα αντίστροφα ευρετήρια σάς επιτρέπουν επίσης να επιταχύνετε τις λειτουργίες αποστολής αντικειμένων κατά την εκτέλεση εντολών ανάκτησης και ώθησης μεταφέροντας απευθείας έτοιμα δεδομένα από το δίσκο. Από προεπιλογή, τα αντίστροφα ευρετήρια δεν δημιουργούνται· για να τα δημιουργήσετε, πρέπει να ενεργοποιήσετε τη ρύθμιση "git config pack.writeReverseIndex true" και στη συνέχεια να συσκευάσετε το χώρο αποθήκευσης με την εντολή "git repack -Ad".

  • Προστέθηκαν βελτιστοποιήσεις απόδοσης με βάση την εμφάνιση στη μορφή αρχείου commit-graph, που χρησιμοποιούνται για τη βελτιστοποίηση της πρόσβασης σε πληροφορίες σχετικά με δεσμεύσεις, νέα δεδομένα σχετικά με τον αριθμό δημιουργίας δεσμεύσεων, τα οποία μπορούν να χρησιμοποιηθούν για την επιτάχυνση πρόσθετων λειτουργιών με δεσμεύσεις.
  • Προστέθηκαν επιλογές για τον επαναπροσδιορισμό του ονόματος του κύριου κλάδου που χρησιμοποιείται από προεπιλογή σε νέα αποθετήρια (ρύθμιση init.defaultBranch). Κατά την πρόσβαση σε εξωτερικά αποθετήρια, το git προσπαθεί να ελέγξει τον κλάδο που δείχνει το HEAD, δηλ. εάν ο εξωτερικός διακομιστής χρησιμοποιεί τον κλάδο "main" από προεπιλογή, τότε η λειτουργία "git clone" θα προσπαθήσει να ελέγξει το "main" τοπικά. Το Git 2.31 υποστηρίζει πλέον αυτόν τον τύπο πληρωμής για κενά αποθετήρια. Για παράδειγμα, όταν κλωνοποιείτε ένα νέο αποθετήριο τοπικά πριν προσθέσετε τις πρώτες ενημερώσεις κώδικα σε αυτό, το τοπικό αντίγραφο θα περιέχει πλέον το προεπιλεγμένο όνομα upstream που έχει οριστεί στον εξωτερικό διακομιστή.
  • Προστέθηκε μια επιλογή --disk-usage στην εντολή "git rev-list" για να παρέχει μια περίληψη του μεγέθους των αντικειμένων.
  • Εν αναμονή της επερχόμενης αλλαγής στο backend συγχώνευσης, ο εντοπισμός μετονομασίας έχει βελτιστοποιηθεί σημαντικά.
  • Η υποστήριξη για την παλαιού τύπου βιβλιοθήκη τυπικών εκφράσεων PCRE1 έχει διακοπεί.
  • Είναι δυνατό να απαγορευθεί αναγκαστικά η χρήση συντομευμένων συνδέσμων, ανεξάρτητα από τον αλγόριθμο κατακερματισμού. Η απαγόρευση ενεργοποιείται με την ανάθεση της τιμής "no" στην παράμετρο core.abbrev.
  • Προστέθηκε η επιλογή "--path-format=(absolute|relative)" στην εντολή "git rev-parse" για να καθορίσετε ρητά εάν θα πρέπει να εξάγονται σχετικές ή απόλυτες διαδρομές.
  • Τα σενάρια ολοκλήρωσης του Bash διευκολύνουν την προσθήκη κανόνων ολοκλήρωσης για τις δικές σας υποεντολές "git".
  • Προστέθηκε μια επιλογή --stdin στην εντολή "git bundle" για την ανάγνωση αναφορών από την τυπική ροή εισόδου.
  • Μια νέα επιλογή προστέθηκε στην εντολή "git log": "--diff-merges=" "
  • Προστέθηκε η επιλογή "--deduplicatecan" στην εντολή "git ls-files" για την εξάλειψη της διπλής εξόδου.
  • Προστέθηκαν νέες μάσκες για τον αποκλεισμό μιας σειράς δεσμεύσεων - " ^!» Και " ^- "
  • Προστέθηκαν οι επιλογές "--left-only" και "--right-only" στην εντολή "git range-diff" για να εμφανίζεται μόνο η μία πλευρά του εύρους που συγκρίνεται.
  • Προστέθηκαν επιλογές --skip-to= στις εντολές "git diff" και "git log". " και "—rotate-to= » για να παρακάμψετε ή να μετακινηθείτε στο τέλος των μονοπατιών εκκίνησης.
  • Προστέθηκε η επιλογή "--skip-to=" στην εντολή "git difftool". » για να συνεχίσετε μια διακοπείσα συνεδρία από μια τυχαία διαδρομή.
  • Ο Κώδικας Συμπεριφοράς, ο οποίος ορίζει τις βασικές αρχές για την επίλυση καταστάσεων σύγκρουσης μεταξύ προγραμματιστών, έχει ενημερωθεί στην έκδοση 2.0 (προηγουμένως χρησιμοποιήθηκε η έκδοση 1.4).

    Πηγή: opennet.ru

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