Sapling, ένα σύστημα ελέγχου πηγαίου κώδικα συμβατό με Git

δενδρύλλιο

Το Sapling δίνει έμφαση στην ευκολία χρήσης ενώ κλιμακώνεται στα μεγαλύτερα αποθετήρια του κόσμου.

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

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

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

Εκτός από την προσαρμοστική φόρτωση δεδομένων, Το Sapling εφαρμόζει επίσης βελτιστοποιήσεις που στοχεύουν στη μείωση του φορτίου πληροφοριών με ιστορικό αλλαγών. (για παράδειγμα, τα 3/4 των δεδομένων σε ένα αποθετήριο με τον πυρήνα Linux είναι ιστορικό αλλαγών).

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

Το έργο βρίσκεται σε εξέλιξη τα τελευταία 10 χρόνια και δημιουργήθηκε για την επίλυση προβλημάτων κατά την πρόσβαση σε πολύ μεγάλα μονολιθικά αποθετήρια με κύριο κλάδο, όπου εφαρμόστηκε η πρακτική της χρήσης της λειτουργίας "rebase" αντί της "merge".

Εκείνη την εποχή, δεν υπήρχαν ανοιχτές λύσεις για εργασία με τέτοια αποθετήρια και οι μηχανικοί του Facebook αποφάσισαν να δημιουργήσουν ένα νέο σύστημα ελέγχου έκδοσης που θα ανταποκρίνεται στις ανάγκες της εταιρείας, αντί να χωρίζει τα έργα σε μικρά αποθετήρια, κάτι που θα οδηγούσε σε πιο περίπλοκη διαχείριση εξαρτήσεων ( κάποτε, για να λύσει ένα παρόμοιο πρόβλημα, η Microsoft δημιούργησε το επίπεδο GVFS).

Αρχικά, το Facebook χρησιμοποίησε το σύστημα Mercurial και το έργο Sapling αναπτύχθηκε αρχικά ως προσθήκη στο Mercurial. Με την πάροδο του χρόνου, το σύστημα έγινε ένα ανεξάρτητο έργο με δικό του πρωτόκολλο, μορφή αποθήκευσης και αλγόριθμους, ο οποίος επεκτάθηκε επίσης με τη δυνατότητα αλληλεπίδρασης με αποθετήρια Git.

Για εργασία, προτείνεται το βοηθητικό πρόγραμμα γραμμής εντολών "sl", που υλοποιεί τυπικές έννοιες, ροές εργασίας και μια διεπαφή οικεία σε προγραμματιστές που είναι εξοικειωμένοι με το Git και το Mercurial. Η ορολογία και οι εντολές στο Sapling είναι ελαφρώς διαφορετικές από το Git και πιο κοντά στο Mercurial.

Μεταξύ των πρόσθετων χαρακτηριστικών του Δενδρυλλίου, τονίζει το υποστήριξη για "έξυπνη εγγραφή" (smartlog), το οποίο σας επιτρέπει να αξιολογήσετε οπτικά την κατάσταση του αποθετηρίου σας, επισημάνετε τις πιο σημαντικές πληροφορίες και φιλτράρετε μικρές λεπτομέρειες. Για παράδειγμα, όταν εκτελείτε το βοηθητικό πρόγραμμα sl χωρίς ορίσματα, εμφανίζονται μόνο οι δικές σας τοπικές αλλαγές (οι ξένες είναι σύμπτυκτες), εμφανίζεται η κατάσταση των εξωτερικών κλάδων, των αλλαγμένων αρχείων και των νέων εκδόσεων δεσμεύσεων. Επιπλέον, παρέχεται μια διαδραστική διεπαφή ιστού για γρήγορη πλοήγηση στο έξυπνο αρχείο καταγραφής, δέντρο αλλαγών και δεσμεύσεις.

Μια άλλη αξιοσημείωτη βελτίωση στο Sapling είναι αυτή κάνει τη διαδικασία διόρθωσης και ανάλυσης σφαλμάτων και επαναφοράς στην προηγούμενη κατάσταση πολύ πιο εύκολη. Για παράδειγμα, οι εντολές "sl undo", "sl redo", "sl uncommit" και "sl unmend" προτείνονται για την αντιστροφή πολλών λειτουργιών, "sl hide" και "sl unhide" για προσωρινή απόκρυψη δεσμεύσεων και για διαδραστική πλοήγηση. δηλώνει ότι το Sapling υποστηρίζει επίσης την έννοια της στοίβας δέσμευσης, η οποία σας επιτρέπει να οργανώσετε μια ανασκόπηση βήμα προς βήμα, αναλύοντας σύνθετες λειτουργίες σε ένα μικρότερο, πιο κατανοητό σταδιακό σύνολο αλλαγών (από ένα βασικό πλαίσιο σε ένα τελικό χαρακτηριστικό).

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

Ο κώδικας για αυτά τα στοιχεία που χρησιμοποιούνται στην υποδομή του Facebook δεν είναι ακόμη ανοιχτός, αλλά η εταιρεία έχει υποσχεθεί να τον κυκλοφορήσει στο μέλλον. Ωστόσο, τα πρωτότυπα διακομιστή Mononoke (στο Rust) και VFS EdenFS (σε C++) βρίσκονται ήδη στο αποθετήριο Sapling. Αυτά τα στοιχεία είναι προαιρετικά και ο πελάτης Sapling είναι αρκετός για να εργαστεί, ο οποίος υποστηρίζει την κλωνοποίηση αποθετηρίων Git, την αλληλεπίδραση με διακομιστές που βασίζονται στο Git LFS και την εργασία με κεντρικούς υπολογιστές git όπως το GitHub.

Έχουν προετοιμαστεί αρκετά πρόσθετα για το Sapling, συμπεριλαμβανομένης της διεπαφής ReviewStack για έλεγχο αλλαγών (κωδικός στο GPLv2), που σας επιτρέπει να επεξεργάζεστε αιτήματα έλξης στο GitHub και να χρησιμοποιείτε μια προβολή στοίβας αλλαγής.

Εάν ενδιαφέρεστε να μάθετε περισσότερα για αυτό, μπορείτε να συμβουλευτείτε τις λεπτομέρειες Στον ακόλουθο σύνδεσμο.


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.