שחרור בקרת מקור של Git 2.38

הוכרז על שחרורו של מערכת בקרת המקור המבוזר Git 2.38. Git היא אחת ממערכות בקרת הגרסאות הפופולריות, האמינות ובעלי הביצועים הגבוהים ביותר, המספקת כלי פיתוח גמישים לא לינאריים המבוססים על הסתעפות ומיזוג. כדי להבטיח את שלמות ההיסטוריה והתנגדות לשינויים רטרואקטיביים, נעשה שימוש ב-hashing מרומז של כל ההיסטוריה הקודמת בכל commit; אפשר גם לאשר תגים בודדים והתחייבויות עם חתימות דיגיטליות של המפתחים.

בהשוואה למהדורה הקודמת, הגרסה החדשה כללה 699 שינויים, שהוכנו בהשתתפות 92 מפתחים, מתוכם 24 לקחו חלק בפיתוח לראשונה. חידושים עיקריים:

  • חבילת הליבה כוללת את כלי השירות "scalar", שפותח על ידי מיקרוסופט לניהול מאגרים גדולים. כלי השירות נכתב במקור ב-C#, אך git כולל גרסה שנכתבה מחדש ב-C. כלי השירות החדש שונה מפקודת git בכך שהוא כולל תכונות והגדרות נוספות כברירת מחדל המשפיעות על הביצועים בעת עבודה עם מאגרים גדולים מאוד. לדוגמה, בעת שימוש ב-scalar, חלים הדברים הבאים:
    • שיבוט חלקי לעבודה עם עותק לא שלם של מאגר.
    • מנגנון ניטור שינויים מובנה במערכת הקבצים (FSMonitor), מבטל את הצורך לעבור על כל ספריית העבודה.
    • אינדקסים המשתרעים על פני אובייקטים בקבצי חבילות שונים (חבילת מולטי-חבילה).
    • קבצי Commit-graph עם אינדקס commit graph המשמשים לאופטימיזציה של הגישה למידע commit.
    • משימות תקופתיות ברקע לשמירה על מבנה מאגר אופטימלי ברקע מבלי לחסום את הסשן האינטראקטיבי (פעם בשעה, מתבצעת משימת הורדה מוקדמת של אובייקטים חדשים מהמאגר המרוחק ועדכון קובץ גרף ה-commit, ותהליך אריזת המאגר מופעל בכל לילה).
    • מצב "sparseCheckoutCone", אשר מגביל את התבניות המותרות בעת ביצוע שכפול חלקי.
  • לפקודת git rebase יש כעת אפשרות --update-refs לעדכון ענפים תלויים המצטלבים עם הענפים שעוברים בסיס מחדש, מה שמבטל את הצורך לבדוק ידנית כל ענף תלוי כדי לעבור ל-commit הרצוי.
  • הפקודה "git rm" תואמת כעת לאינדקסים חלקיים.
  • שופר ההתנהגות של פקודת git mv AB בעת העברת קובץ מסביבת עבודה עם אינדקסים חלקיים במצב חרוט לסביבת עבודה חיצונית שאין בה מצב חרוט.
  • פורמט קובץ ה-bitmap עבר אופטימיזציה לעבודה עם מאגרים גדולים - נוספה טבלת אינדקס אופציונלית עם רשימה של commits שנבחרו וההיסטים שלהם.
  • הפקודה "git merge-tree" מיישמת מצב חדש שבו, בהתבסס על שני קומיטים שצוינו, מחושב עץ עם תוצאת המיזוג, כאילו ההיסטוריה של קומיטים אלה אוחדה.
  • נוספה ההגדרה "safe.barerepository" כדי לשלוט האם ניתן למקם מאגרים ריקים (מאגרים שאינם מכילים עץ עבודה) בתוך מאגרי Git אחרים. הגדרה זו ל-"explicit" תאפשר מאגרים ריקים רק בספרייה ברמה העליונה. כדי לאפשר מאגרים ריקים בתת-ספריות, השתמש בהגדרה "all".
  • לפקודה "git grep" יש כעת את האפשרות "-m" ("--max-count"), בדומה לאפשרות grep של GNU בעלת אותו שם, המאפשרת לך להגביל את מספר ההתאמות המוצגות.
  • לפקודה "ls-files" יש כעת אפשרות "--format" להתאמה אישית של שדות הפלט (לדוגמה, ניתן להפעיל את הפלט של שם האובייקט, מצבים וכו').
  • בקובץ "git cat-file", בעת הצגת תוכן של אובייקטים, יושמה היכולת לקחת בחשבון את כתובות הדוא"ל של המחבר שצוינו בקובץ מפת הדואר.

מקור: OpenNet.ru