
Εισήχθη έκδοση κατανεμημένου συστήματος διαχείρισης πηγαίου κώδικα Git 2.55Μεταξύ των βασικών αλλαγών: ενεργοποίηση της προεπιλεγμένης έκδοσης με Rust, υλοποίηση για Linux Διεργασία fsmonitor, νέα στρατηγική για την ανασυσκευασία του αυξητικού δείκτη MIDX, η εντολή git history fixup για τη διόρθωση μιας υποβολής, βελτιστοποίηση της δημιουργίας bitmap διαθεσιμότητας αντικειμένων, υποστήριξη για παράλληλη εκτέλεση hooks, η εντολή git format-rev. Κώδικας Git διανέμονται από άδεια σύμφωνα με το GPLv2+.
Σε σύγκριση με την προηγούμενη έκδοση, η νέα έκδοση περιλαμβάνει 505 αλλαγές που προετοιμάστηκαν με τη συμμετοχή 100 προγραμματιστών, 33 εκ των οποίων ήταν καινούργιοι στην ανάπτυξη Git.
Κύριες καινοτομίες (github.blog, gitlab.com/blog, gitlab.com/git-scm):
- Από προεπιλογή περιλαμβάνεται Υποστήριξη για στοιχεία Rust. Ο μεταγλωττιστής rustc. προστέθηκε στις εξαρτήσεις κατασκευής. Για να δημιουργήσετε χωρίς Rust, μπορείτε να χρησιμοποιήσετε τη σημαία NO_RUST=1 κατά την εκτέλεση του βοηθητικού προγράμματος make ή -Drust=disabled κατά την εκτέλεση του meson configure. Η δυνατότητα απενεργοποίησης της δημιουργίας με Rust θα υποστηρίζεται μέχρι την έκδοση Git 3.0, στην οποία θα είναι διαθέσιμο το Rust. περιλαμβάνεται Μεταξύ των απαιτούμενων εξαρτήσεων. Η γλώσσα Rust υλοποιεί ένα επίπεδο για φορητότητα μεταξύ των διαμορφώσεων κατακερματισμού SHA-1 και SHA-256, καθώς και ορισμένες εσωτερικές συναρτήσεις, όπως η κωδικοποίηση και η αποκωδικοποίηση ακεραίων μεταβλητού μήκους. Αναμένεται ότι στο μέλλον θα ξαναγραφτούν στο Rust πιο σημαντικά εσωτερικά στοιχεία του Git.
- Προς την πειραματική ομάδα "ιστορικό git"Η λειτουργία "git history fixup" έχει προστεθεί στο εργαλείο επανεγγραφής ιστορικού υποβολών, το οποίο παρέχει τη δυνατότητα επανεγγραφής του ιστορικού υποβολών. Η λειτουργία fixup σάς επιτρέπει να μετακινείτε αλλαγές που προστέθηκαν μέσω του git add σε μια προηγούμενη υποβολή και να επανεγγράφετε αυτόματα όλες τις επόμενες υποβολές, παρόμοια με την εκτέλεση της εντολής git commit --fixup=. και εκτελώντας την εντολή git rebase --autosquash ~.
- Για πλατφόρμα Linux υλοποιήθηκε διαδικασία παρασκηνίου fsmonitor, το οποίο παρακολουθεί τις αλλαγές στο σύστημα αρχείων χρησιμοποιώντας έναν μηχανισμό κοινοποιώ και σας επιτρέπει να αποφύγετε τη διέλευση ολόκληρου του καταλόγου εργασίας κατά την εκτέλεση εντολών όπως η git status. Μπορεί να ενεργοποιηθεί μέσω της εντολής "core.fsmonitor».
- Η εντολή git repack έχει πλέον μια νέα επιλογή --write-midx=incremental. Αυτή η επιλογή εφαρμόζει μια νέα στρατηγική για την ενημέρωση των μεταδεδομένων στο αυξητικό ευρετήριο MIDX (ευρετήριο πολλαπλών πακέτων), εξαλείφοντας την ανάγκη επανασυσκευασίας ολόκληρου του ευρετηρίου. Το αυξητικό ευρετήριο πολλαπλών πακέτων χρησιμοποιεί επίπεδα αντί για ένα μόνο μεγάλο ευρετήριο που περιέχει πληροφορίες σχετικά με την κατανομή των αντικειμένων σε όλα τα αρχεία πακέτων. Κάθε επίπεδο καλύπτει έναν συγκεκριμένο αριθμό αρχείων πακέτων και αποθηκεύεται σε ξεχωριστό αρχείο bitmap. Αυτή η δομή επιτρέπει την προσθήκη δεδομένων σχετικά με αντικείμενα σε νέα αρχεία πακέτων στο ευρετήριο, προσθέτοντας νέα επίπεδα στο ευρετήριο χωρίς να ανακατασκευάζονται υπάρχοντα επίπεδα. Η εντολή git repack --write-midx=incremental προσθέτει ένα νέο επίπεδο στο αυξητικό ευρετήριο MIDX, καλύπτοντας τα πρόσφατα δημιουργημένα αρχεία πακέτων. Όταν συνδυάζεται με τη λειτουργία συσκευασίας αποθετηρίου --geometric, η εντολή new σάς επιτρέπει να συνδυάσετε νέα αντικείμενα από πολλά αρχεία πακέτων σε ένα μόνο μεγαλύτερο αρχείο πακέτων και, εάν είναι απαραίτητο, να συσκευάσετε και να συγχωνεύσετε πολλά γειτονικά επίπεδα ενός αυξητικού ευρετηρίου MIDX. Αυτή η στρατηγική επιτρέπει στο git repack να ξαναγράψει μόνο τα κορυφαία επίπεδα, αφήνοντας άθικτα τα παλαιότερα, μεγαλύτερα επίπεδα, και αποτρέπει την ανεξέλεγκτη ανάπτυξη της αλυσίδας επιπέδων διατηρώντας τον συνολικό αριθμό επιπέδων ανάλογο με τον λογάριθμο του συνολικού αριθμού αντικειμένων.
- Η δημιουργία bitmap διαθεσιμότητας αντικειμένων έχει βελτιστοποιηθεί σημαντικά μέσω ενός νέου αλγορίθμου διέλευσης δέντρων αντικειμένων που εξαλείφει την περιττή αναδρομή, την προσωρινή αποθήκευση των θέσεων των αντικειμένων, την ταξινόμηση των bitmap πριν από τον συνδυασμό τους με τη λειτουργία XOR και την αναδιαμόρφωση του κώδικα για τη δημιουργία bitmap ψευδο-συγχώνευσης (ψευδο-συγχώνευση). Στο αποθετήριο δοκιμών, οι βελτιστοποιήσεις μείωσαν τον χρόνο δημιουργίας bitmap από 612 σε 294 δευτερόλεπτα.
- Έχει υλοποιηθεί η δυνατότητα εκτέλεσης ανεξάρτητων εργασιών παράλληλα αγκίστρια Σε αρχεία διαμόρφωσης. Τα hooks που επηρεάζουν ή λαμβάνουν υπόψη την κοινόχρηστη κατάσταση, όπως αυτά που αλλάζουν τις σημειώσεις υποβολής ή επιθεωρούν τα ευρετήρια και το δέντρο εργασίας, δεν μπορούν να εκτελεστούν παράλληλα. Ωστόσο, τα hooks για έλεγχο linter και δοκιμή μονάδας μπορούν να εκτελεστούν παράλληλα. Τα hooks που επιτρέπουν την παράλληλη εκτέλεση διαμορφώνονται χρησιμοποιώντας την παράμετρο hook.hook_name.parallel = true. Ο αριθμός των εργασιών που μπορούν να εκτελεστούν ταυτόχρονα καθορίζεται από το hook.jobs, hook. .jobs ή την επιλογή γραμμής εντολών -j.
- Η εντολή git pack-objects --path-walk σάς επιτρέπει πλέον να καθορίσετε φίλτρα όπως blob:none, blob:limit= , δέντρο:0, αντικείμενο:τύπος= , αραιό: και combine:. Στη δοκιμή, η απόρριψη blobs κατά την εκτέλεση της --path-walk μείωσε το μέγεθος του δημιουργημένου αρχείου pack κατά 16%.
- Προστέθηκε η εντολή git format-rev για τη μορφοποίηση αναθεωρήσεων και ονομάτων αντικειμένων που αναφέρονται σε λίστες υποβολών ή βρίσκονται σε αυθαίρετο κείμενο (για παράδειγμα, αυτό μπορεί να χρησιμοποιηθεί σε hooks για την επεξεργασία σημειώσεων υποβολής).
git τελευταία τροποποίηση | git format-rev --stdin-mode=text --format=%an
Junio C Hamano ενσωματωμένο/commit.c
- Η διαφυγή των περισσότερων ακολουθιών ελέγχου τερματικού σε ενημερωτικά μηνύματα και κείμενο σφάλματος που αποστέλλεται από τον διακομιστή είναι ενεργοποιημένη από προεπιλογή. Κατά την πρόσβαση σε έναν κακόβουλο διακομιστή, τέτοιες ακολουθίες διαφυγής θα μπορούσαν να χρησιμοποιηθούν για την απόκρυψη ή την τροποποίηση της εξόδου, για παράδειγμα, μέσω ακολουθιών διαφυγής για την κίνηση του δρομέα και την εκκαθάριση κειμένου. Η υποστήριξη για ακολουθίες διαφυγής για την επισήμανση στοιχείων έχει διατηρηθεί.
- Η εντολή git checkout -m αποθηκεύει πλέον αυτόματα τις τοπικές αλλαγές που βρίσκονται σε διένεξη στην περιοχή αποθήκευσης χωρίς να απαιτείται να επιλύσετε αμέσως τη διένεξη.
- Η εντολή git push υποστηρίζει πλέον την προώθηση ενός κλάδου σε πολλούς εξωτερικούς διακομιστές Git με μία μόνο εντολή. Για παράδειγμα, για να προωθήσετε τον κύριο κλάδο όχι μόνο στον κύριο διακομιστή αλλά και σε mirrors, μπορείτε να δημιουργήσετε μια ομάδα δημοσίευσης που αποτελείται από τους διακομιστές github, gitlab και mirror:
git config remotes.publish "καθρέφτης github gitlab"
git push δημοσίευση main
- Η επιλογή --graph-lane-limit= έχει προστεθεί στην εντολή git log --graph. για να περιορίσετε τον αριθμό των κάθετων γραμμών κατά την οπτικοποίηση κλαδιών, κάτι που σας επιτρέπει να αφήσετε χώρο στην οθόνη για δεδομένα υποβολής σε αποθετήρια με μεγάλο αριθμό κλαδιών.
...
* | | | | 619931f561 Συγχώνευση κλάδου 'dl/posix-unused-warning-clang'
|\ \ \ \ \
| * | | | ~ cf48887610 compat/posix.h: απλοποίηση της σύγκρισης GIT_GNUC_PREREQ()
| * | | | ~ ffd45926dc compat/posix.h: εκκαθάριση των GIT_GNUC_PREREQ() και UNUSED
|\ \ \ \ \~
| * | | | ~3f5203eeb4 ls-files: φιλτράρισμα pathspec πριν από το lstat
- Η επιλογή --max-count-oldest= έχει προστεθεί στις εντολές git log και git rev-list. , το οποίο σας επιτρέπει να επιλέξετε τις N παλαιότερες υποβολές σε ένα εύρος.
Πηγή: linux.org.ru
