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

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

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

  • Η δυνατότητα μερικής κλωνοποίησης πλησιάζει σε σταθεροποίηση και πλήρη ετοιμότητα, επιτρέποντάς σας να μεταφέρετε μόνο μέρος των δεδομένων και να εργαστείτε με ένα ημιτελές αντίγραφο του αποθετηρίου. Ένας τυπικός κλώνος αντιγράφει όλα τα δεδομένα από το αποθετήριο, συμπεριλαμβανομένης κάθε έκδοσης κάθε αρχείου στο ιστορικό αλλαγών. Για πολύ μεγάλα αποθετήρια, η αντιγραφή δεδομένων οδηγεί σε σημαντική αύξηση της επισκεψιμότητας και του χώρου στο δίσκο, ακόμα κι αν ο προγραμματιστής ενδιαφέρεται μόνο για ένα υποσύνολο των αρχείων. Για να διευκολυνθεί η ανάκτηση μόνο μέρους του δέντρου προέλευσης εργασίας, η νέα έκδοση εισάγει μια πειραματική εντολή "sparse-checkout" και μια νέα επιλογή "--sparse" για την εντολή "clone".

    Προηγουμένως, η διαδικασία επιλεκτικής κλωνοποίησης εκτελούνταν μέσω της εργασίας φίλτρα για να φιλτράρετε το περιττό περιεχόμενο και την επιλογή «—no-checkout» για να απενεργοποιήσετε τη συμπλήρωση των αρχείων που λείπουν. Μετά από αυτό, πριν εκτελέσετε τη λειτουργία ολοκλήρωσης αγοράς, ήταν απαραίτητο να ενεργοποιήσετε τη ρύθμιση core.sparseCheckout και να ορίσετε μια λίστα μοτίβων διαδρομής που εξαιρούνται στο αρχείο .git/info/sparse-checkout. Για παράδειγμα, για να κλωνοποιήσετε χωρίς blobs και να αποτρέψετε την εξαγωγή αρχείων από υποκαταλόγους βάθους 2 ή μεγαλύτερου, θα μπορούσατε να εκτελέσετε:

    git clone --filter=blob:none --no-checkout /your/repository/here repo
    $cd αποθετήριο
    $ cat >.git/info/sparse-checkout
    /*
    !/*
    EOF
    $ git config core.sparseCheckout 1
    $ git ταμείο .

    Η νέα εντολή "git sparse-checkout" απλοποιεί σημαντικά την εργασία και μειώνει τη διαδικασία οργάνωσης της εργασίας με ένα ημιτελές αποθετήριο στις ακόλουθες εντολές:

    git clone --filter=blob:none --sparse /your/repository/here repo
    git sparse-checkout set /path/to/check/out

    Η εντολή sparse-checkout σάς επιτρέπει να ορίσετε μια λίστα διαδρομών για την ολοκλήρωση αγοράς (set) χωρίς να ρυθμίσετε με μη αυτόματο τρόπο το .git/info/sparse-checkout, καθώς και να εμφανίσετε την τρέχουσα λίστα διαδρομών (λίστα) και να ενεργοποιήσετε ή να απενεργοποιήσετε μερικά checkouts (ενεργοποίηση /καθιστώ ανίκανο).

    Για να βελτιστοποιήσετε την εργασία με πολύ μεγάλα αποθετήρια και λίστες προτύπων, το "git config core.sparseCheckoutCone", το οποίο περιορίζει τα επιτρεπόμενα μοτίβα (αντί για αυθαίρετα μοτίβα .gitignore, μπορείτε να καθορίσετε εάν θα πρέπει να ελέγχονται όλες οι διαδρομές και όλα τα αρχεία σε έναν δεδομένο υποκατάλογο). Για παράδειγμα, εάν ένα μεγάλο αποθετήριο έχει έναν κατάλογο "A/B/C" και όλη η εργασία συγκεντρώνεται στον υποκατάλογο "C", τότε όταν ενεργοποιείτε τη λειτουργία sparseCheckoutCone, η εντολή "git sparse-checkout set A/B/ Το C θα εξαγάγει ολόκληρο το περιεχόμενο του "C", αλλά από το "A" και το "B" θα εξαγάγει μόνο τα μέρη που είναι απαραίτητα για την εργασία με το "C".

  • Από την τεκμηρίωση ("git rebase -h"), έχουν αφαιρεθεί όλες οι αναφορές στην επιλογή "--preserve-merges", η οποία έχει καταργηθεί και θα πρέπει να χρησιμοποιηθεί για τη μετεγκατάσταση ενός συνόλου δεσμεύσεων.git rebase --rebase-merges".
  • Για να βελτιωθεί η αναγνωσιμότητα των μηνυμάτων με ενημερώσεις κώδικα που αποστέλλονται σε λίστες αλληλογραφίας, έχει προστεθεί η επιλογή «git format-patch —cover-from-description subject», όταν καθορίζεται, η πρώτη παράγραφος από το κείμενο περιγραφής κλάδου χρησιμοποιείται ως θέμα του συνοδευτική επιστολή για ένα σετ μπαλωμάτων.
  • Υλοποιήθηκε υποστήριξη για τη συνδυασμένη χρήση της εντολής "git apply -3way" και της ρύθμισης "merge.conflictStyle" (το "git apply" λαμβάνει πλέον υπόψη το στυλ περιγραφής διένεξης από το merge.conflictStyle όταν είναι απαραίτητο να επιλυθεί η διένεξη μετά την απόπειρα για να εφαρμόσετε ένα αρχείο ενημέρωσης κώδικα στο αποθετήριο).
  • Ο κώδικας ορισμού συνάρτησης που χρησιμοποιείται σε πράξεις όπως "git diff/grep --show-function/-function-context" έχει επεκταθεί για να υποστηρίζει τον καθορισμό ορίων συναρτήσεων σε προγράμματα γλώσσας Ελιξήριο.
  • Προστέθηκε μια νέα επιλογή στις εντολές "git add", "git commit", "git reset" και άλλες εντολές - "-pathspec-from-file", που καθιστά δυνατή τη φόρτωση μιας λίστας διαδρομών από ένα αρχείο ή ροή εισόδου , αντί να τα καταχωρήσετε στη γραμμή εντολών.
  • Το πρόβλημα με τον εντοπισμό μετονομασιών σε επίπεδο καταλόγου κατά την εγγραφή δεσμεύσεων έχει επιλυθεί. Ο ορισμός δεν λειτουργούσε εάν τα περιεχόμενα ενός υποκαταλόγου μετακινούνταν στη ρίζα του αποθετηρίου.
  • Έχει προταθεί μια αρχική υλοποίηση της επανασχεδιασμένης εντολής "git add -i", η οποία σας επιτρέπει να προσθέτετε αλλαγμένο περιεχόμενο διαδραστικά, ξαναγραμμένο από Perl σε C. Μια παρόμοια επανεπεξεργασία της εντολής "git add -p" βρίσκεται σε εξέλιξη.
  • Η εντολή "git log –graph" ανακατασκευάστηκε, δημιουργώντας μια εικόνα ASCII ενός γραφήματος με το ιστορικό αλλαγών στο αποθετήριο. Η επανάληψη κατέστησε δυνατή τη σημαντική βελτίωση και απλοποίηση του αποτελέσματος χωρίς παραμόρφωση της δομής της ιστορίας, η οποία, για παράδειγμα, έλυσε το πρόβλημα με την εικόνα να εκτείνεται πέρα ​​από το πλάτος της τερματικής γραμμής.
  • Η επιλογή "git log --format=.." σάς επιτρέπει να αλλάξετε τη μορφή εξόδου,
    επεκτείνεται με υποστήριξη για τις σημαίες "l/L" ώστε να εμφανίζεται μόνο το τμήμα της διεύθυνσης email που υποδεικνύεται πριν από το σύμβολο "@" (για παράδειγμα, χρήσιμο όταν όλοι οι προγραμματιστές έχουν όλα τα μηνύματα ηλεκτρονικού ταχυδρομείου στον ίδιο τομέα).

  • Προστέθηκε μια υποεντολή "set-url" στην εντολή "git submodule".
  • Τα κιτ δοκιμών έχουν ενημερωθεί στο πλαίσιο της προετοιμασίας για τη μετάβαση σε
    αλγόριθμος κατακερματισμού SHA-2 αντί για SHA-1.

Πηγή: opennet.ru

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