גרסאות Git 2.55 עם תמיכה ב-Rust מופעלת כברירת מחדל

הוכרזה גרסת Git 2.55 של מערכת בקרת קוד המבוזר. שינויים עיקריים כוללים: הכללת מערכות בניית Rust כברירת מחדל, יישום עבור Linux תהליך fsmonitor, אסטרטגיה חדשה לאריזה מחדש של אינדקס MIDX מצטבר, הפקודה "git history fixup" לתיקון commit, אופטימיזציה של יצירת מפת סיביות של זמינות אובייקטים, תמיכה בביצוע hook מקבילי, והפקודה "git format-rev". Git מורשה תחת רישיון GPLv2+.

בהשוואה לגרסה הקודמת, הגרסה החדשה כוללת 505 שינויים שהוכנו בעזרת 100 מפתחים, מתוכם 33 היו חדשים בפיתוח גיט. תכונות חדשות עיקריות (1, 2, 3):

  • תמיכה ברכיבי שפת Rust מופעלת כברירת מחדל. מהדר ה-rustc
    Rust נוסף לתלויות הבנייה. כדי לבנות ללא Rust, ניתן להשתמש בדגל "NO_RUST=1" בעת הפעלת כלי ה-make או ב-"-Drust=disabled" בעת הפעלת "meson configure". היכולת להשבית בנייה עם Rust תתמך עד Git 3.0, שתכלול את Rust כתלות נדרשת. Rust מיישם שכבה לניידות בין תצורות גיבוב של SHA-1 ו-SHA-256, כמו גם כמה פונקציות פנימיות, כגון קידוד ופענוח של מספרים שלמים באורך משתנה. צפויים בעתיד להיכתב מחדש ב-Rust פונקציות פנימיות משמעותיות יותר של Git.
  • הפקודה הניסיונית "git history", המספקת את היכולת לכתוב מחדש את היסטוריית השינויים, עודכנה עם פעולת "git history fixup" לתיקון commit. פעולת ה-"fixup" מאפשרת לך להעביר שינויים שנוספו באמצעות "git add" ל-commit קודם ולכתוב מחדש אוטומטית את כל commits הבאים, בדומה להפעלת הפקודה "git commit --fixup=". " והרצת "git rebase --autosquash" ~».
  • עבור הפלטפורמה Linux תהליך הרקע fsmonitor יושם, אשר מנטר שינויים במערכת הקבצים באמצעות מנגנון inotify ומאפשר לך להימנע מחציית ספריית העבודה כולה בעת ביצוע פקודות כגון "git status". ניתן להפעילו באמצעות ההגדרה "core.fsmonitor".
  • הפקודה "git repack" עודכנה עם האפשרות "--write-midx=incremental". אפשרות זו מיישמת אסטרטגיה חדשה לעדכון מטא-דאטה באינדקס ה-MIDX המצטבר (multi-pack index), ובכך מבטלת את הצורך לארוז מחדש את כל האינדקס. האינדקס המצטבר של multi-pack משתמש בשכבות במקום באינדקס גדול יחיד המכיל מידע על פיזור האובייקטים בין קבצי pack. כל שכבה מכסה מספר מסוים של קבצי pack ומאוחסנת בקובץ bitmap נפרד. מבנה זה מאפשר להוסיף נתונים על אובייקטים בקבצי pack חדשים לאינדקס, תוך צירוף שכבות חדשות לאינדקס מבלי לבנות מחדש שכבות קיימות.

    הפקודה "git repack --write-midx=incremental" מוסיפה שכבה חדשה לאינדקס ה-MIDX המצטבר, הכוללת קבצי pack שנוצרו לאחרונה. בשילוב עם מצב האריזה של המאגר "--geometric", הפקודה החדשה מאפשרת שילוב אובייקטים חדשים מקבצי pack מרובים לקובץ pack אחד גדול יותר, ובמידת הצורך, אריזה ומיזוג של שכבות סמוכות מרובות של אינדקס ה-MIDX המצטבר. אסטרטגיה זו מאפשרת ל-"git repack" לכתוב מחדש רק את השכבות העליונות, ולהשאיר שכבות ישנות וגדולות יותר שלמות. היא גם מונעת צמיחה בלתי מבוקרת של שרשרת השכבות על ידי שמירה על מספר השכבות הכולל ביחס ללוגריתם של מספר האובייקטים הכולל.

  • יצירת מפות סיביות של זמינות אובייקטים עברה אופטימיזציה משמעותית באמצעות אלגוריתם חדש של חציית עץ אובייקטים, אשר מבטל רקורסיה מיותרת, אחסון במטמון של מיקומי אובייקטים, מיון מפות סיביות לפני שילובן עם פעולת XOR ועיבוד מחדש של הקוד ליצירת מפות סיביות מסוג pseudo-merge. במאגר הבדיקות, אופטימיזציות אלו הפחיתו את זמן יצירת מפת הסיביות מ-612 ל-294 שניות.
  • ביצוע מקביל של ווים עצמאיים אפשרי כעת בקבצי תצורה. ווים המשפיעים או מתחשבים במצב משותף, כגון אלו שמשנים הערות commit או בודקים אינדקסים ואת עץ העבודה, אינם ניתנים להרצה במקביל. עם זאת, ווים לבדיקת linter ובדיקות יחידה ניתנים להרצה במקביל. ווים המאפשרים ביצוע מקביל מוגדרים באמצעות הפרמטר "hook.hook_name.parallel = true". מספר העבודות שניתן להריץ בו זמנית נקבע על ידי הגדרת hook hook.jobs. .jobs או אפשרות שורת הפקודה "-j".
  • הפקודה "git pack-objects --path-walk" מאפשרת כעת לציין פילטרים כגון "blob:none", "blob:limit=" ", "עץ:0", "אובייקט:סוג= », «דליל: " ו-"combine:". בבדיקה, מחיקת בלובים בעת ביצוע "--path-walk" הקטינה את גודל קובץ החבילה שנוצר ב-16%.
  • נוספה הפקודה "git format-rev" לעיצוב גרסאות ושמות אובייקטים המוזכרים ברשימות commit או שנמצאים בטקסט שרירותי (לדוגמה, ניתן להשתמש בה ב-hooks לעיבוד הערות commit).

    git שונה לאחרונה | git format-rev --stdin-mode=text --format=%an

    ג'וניו C Hamano מובנה/תחייב.ג

  • בריחת רוב רצפי בקרת הטרמינל בהודעות מידע ובטקסט שגיאה המועברים מופעלת כברירת מחדל. שרתבעת גישה לתוכנות זדוניות שרת ניתן להשתמש ברצפי בריחה כאלה כדי להסתיר או לשנות פלט, לדוגמה באמצעות רצפי בריחה להזזת הסמן ולניקוי טקסט. התמיכה ברצפי בריחה להדגשת אלמנטים נשמרה.
  • הפקודה git checkout -m שומרת כעת אוטומטית שינויים מקומיים סותרים באזור האחסון מבלי לדרוש ממך לפתור את הקונפליקט באופן מיידי.
  • הפקודה "git push" מאפשרת לך כעת לדחוף ענף למספר שרתי Git חיצוניים באמצעות פקודה אחת. לדוגמה, כדי לדחוף את הענף הראשי לא רק לשרת הראשי אלא גם לשרתים עם שרתים חיצוניים, תוכל ליצור קבוצת "פרסום" מ... שרתים "גיטהאב", "גיטלאב" ו"מירור":

    git config remotes.publish "github gitlab mirror"
    פרסום ראשי של git push

  • לפקודה "git log --graph" יש כעת את האפשרות "--graph-lane-limit=". » כדי להגביל את מספר הפסים האנכיים בעת הצגת ענפים, מה שמאפשר לך להשאיר מקום על המסך לנתוני commit במאגרים עם מספר רב של ענפים.

    ...
    * | | | | 619931f561 סניף מיזוג 'dl/posix-unused-warning-clang'
    |\ \ \ \ \
    | * | | | ~ cf48887610 compat/posix.h: פשט את ההשוואה של GIT_GNUC_PREREQ()
    | * | | | ~ ffd45926dc compat/posix.h: ניקוי GIT_GNUC_PREREQ() ו-UNUSED
    |\ \ \ \ \~
    | * | | | ~3f5203eeb4 קבצי ls: סנן pathspec לפני lstat

  • לפקודות "git log" ו-"git rev-list" יש כעת את האפשרות "--max-count-oldest=". , המאפשר לך לבחור את N הקומיטים הישנים ביותר בטווח.

מקור: OpenNet.ru

קנה אירוח אמין לאתרים עם הגנת DDoS, שרתי VPS VDS 🔥 קנה אחסון אתרים אמין עם הגנת DDoS, שרתי VPS VDS | ProHoster