גיט 2.50: שיפורי ביצועים עבור מאגרים גדולים ועוד

git-2.50

לפני כמה ימים זה פורסם שחרור הגרסה החדשה של פרויקט גיט 2.50, מציג יותר מ-600 שינויים מונע על ידי קהילה פעילה שכללה הפעם 98 מפתחים, כולל 35 תורמים חדשים.

גרסה חדשה זו של גיט 2.50 בולטת בשילוב פקודות חדשות (git-diff-pairs), פונקציות חדשות לניקוי, סינון ותחזוקה, החלפת מנוע המיזוג הרקורסיבי ב-ORT, כמו גם שיפורי ביצועים ותיקוני באגים.

Git 2.50 תכונות חדשות עיקריות

בגרסה החדשה של גיט 2.50, אחת התכונות החדשות החשובות ביותר היא אופטימיזציה בטיפול במה שנקרא "חבילות קרפט", כלומר, חבילות של אובייקטים שאינם נגישים או שאינם מופנים על ידי ענפים או תגיות. באופן מסורתי, גיט אחסנה אובייקטים אלה בקובץ חבילה יחיד וגדול, מה שעלול לגרום לבעיות ביצועים בעת אריזה מחדש של מאגרים עם רבים מהפריטים הללו.

עם הגרסה החדשה, גיט מאפשר לך לפצל את חבילות ה-cruft הללו למספר קבצים קטנים יותר., אשר מפחית את השימוש בדיסק ומשפר את ביצועי הקלט/פלט עבור פעולות בכמות גדולה. בנוסף, sוהזן את האפשרות –combine-cruft-below-sizeמאפשר לשלב חבילות קטנות לאחת בצורה גמישה יותר מאשר האפשרות הקודמת –max-cruft-size, מבלי להטיל מגבלה על גודל הקובץ המשולב. תכונה חדשה זו שימושית במיוחד בפרויקטים עם אובייקטים יתומים הפרוסים על פני מספר חבילות.

שיפור נוסף שמטרתו מאגרים בקנה מידה גדול הוא ה- תמיכה ניסיונית עבור העדכון ההדרגתי של מדדי MIDX , איזה הם מאחסנים מידע על אובייקטים בשכבות נפרדות שימוש בקבצי מפת סיביות, המאפשרים עדכונים מהירים יותר עם הוספת קומיטים חדשים. התקדמות זו קריטית עבור מאגרים גדולים הדורשים פעולות אינדוקס מהירות מבלי שיהיה צורך לבנות מחדש לחלוטין את המטא-דאטה.

החלפה מלאה של מנוע המיזוג הרקורסיבי עם ORT

גיט 2.50 מציג שינוי משמעותי עם ה- הסרה קבועה של מנוע ההיתוך הרקורסיבי מסורתי. במקום זאת, השימוש ב-ORT מאוחד, אחד מנוע היתוך מודרני, תחזוקה ויעיל יותר. ORT לא רק מציע ניתוח קונפליקטים מדויק יותר, אלא גם מאפשר לך לוודא האם מיזוג אפשרי מבלי ליצור אובייקטים נוספים. יתר על כן, הפקודה merge-tree כוללת כעת אפשרות –quiet לשימוש כבודק מיזוג שקט מבלי לשנות את המאגר.

זוגות גיט-דיפ: הפתרון לבעיות מדרגיות

סקירת קוד היא ללא ספק אחד מעמודי התווך של פיתוח שיתופי מודרני, והבדלים או הבדלים בין גרסאות שונות ממלאים תפקיד חשוב בתהליך זה. עם הגעת Git 2.50, הוצג פתרון שנועד להרחבה: הפקודה החדשה git-diff-pairs.

באופן מסורתי, כדי להשוות בין שתי גרסאות משתמשים בפקודה כמו:

git diff HEAD~1 HEAD

פעולה זו יוצרת תיקון מלא המכיל את כל השינויים בין הגרסאות המפורטות. למרות שזה יעיל במקרים רבים, זה יכול להוות בעיית ביצועים בעת התמודדות עם קבוצות גדולות של קבצים שעברו שינוי.

זו הסיבה ש-git-diff-pairs תוכנן במיוחד כדי לקבל קלט גולמי ישירות מהפלט של git diff-tree, וליצור את התיקונים המתאימים ביעילות ובדייקנות.

השימוש פשוט כמו:

git diff-tree -r -z -M HEAD~ HEAD | git diff-pairs -z

פקודה זו לוקחת את זוגות ה-blob שסופקו ומייצרת את פלט ה-diff המדויק, תוך שמירה על מידע הקשרי ומאפשרת פיצול עבודה לקבוצות קטנות יותר. זה פותח את הדלת לעיבוד מקבילי, משפר את יעילות המשאבים ומקל על יכולת ההרחבה בכלים מבוססי diff כמו GitLab.

תכונות חדשות לניקוי, סינון ותחזוקה

גיט 2.50 כולל מספר כלים נוספים שנועדו לשפר את תחזוקת המאגרים:

  • הפקודה נוספה שחרור ריפלוג גיט, המאפשר לך למחוק לחלוטין את הרפלוג עבור ענף ספציפי, אידיאלי לניקוי היסטוריית העבודה שלך כאשר אינך צריך עוד לשמור הפניות קודמות.
  • אפשרות -לְסַנֵן הפקודה cat-file –batch זמינה כעת ב-git, ומאפשרת לך לסנן תוצאות לפי סוג אובייקט.

בנוסף, מודגשות גם מספר אופטימיזציות פנימיות:

  • שימוש משופר בקישורים סמליים, עם אחסון במטמון של קידומות וצמצום בדיקות מיותרות.
  • הסרת תלויות Perl בתיעוד ובסקריפטי בדיקה, והחלפתן בפונקציות מעטפת או במימושי C, מה שמקל על הקומפילציה שלהן במערכות עם תצורות מינימליסטיות.
  • כולל בקר הבדל משתמש לניתוח הבדלים בקבצי .ini.
  • שיפור התאימות של פקודת git send-email עם שרתי SMTP כגון Outlook.

לבסוף, אם אתה מעוניין לדעת יותר על זה, אתה יכול לעיין בפרטים ב הקישור הבא.