Git 2.29.0 מגיע עם תמיכה ניסיונית ב- SHA-256, שיפורים ועוד

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

לאחרונה הוכרזה הגרסה החדשה שלה "Git 2.29.0" ובהשוואה לגרסה הקודמת, בגרסה החדשה אומצו 627 שינויים, הופק בהשתתפות 89 מפתחים, מתוכם 24 השתתפו בפיתוח לראשונה.

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

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

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

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

בשלב זה של פיתוח תוכלו לבחור רק בין SHA-1 ל- SHA-256, אך עד כה אינכם יכולים לשלב חשיפות שונות במאגר בו זמנית. כמו כן, נכון לעכשיו, אף ספק Git, כולל GitHub, אינו תומך במאגרים עם חשיש SHA-256. ישנן תוכניות להוסיף תכונות ניידות בעתיד.

שינוי נוסף בגרסה החדשה הזו נמצא בפקודה "Git fetch" ו- "git push" לאלה ש מוסיף תמיכה במפרט קישורים בלעדי (refspec), מרחיב זכויות קישור תואמות בין סניפים במאגרים מקומיים וחיצוניים. אי הכללת מפרטי הפניה יכולה להיות שימושית במצבים בהם עליך לא רק לבחור אלא גם להוציא ענפים מסוימים מהמיפוי. לדוגמא, כאשר היה צורך לבדוק את כל הענפים "refs / heads / *", למעט אחד "refs / heads / ref-to-exclude", ראשית היה צורך לציין רשימה מלאה, הכוללת במפורש כל ענף.

שדות חדשים נוספו ל- "git for-each-ref" שניתן לציין באמצעות האפשרות "-פורמט", בנוסף לשם, לסוג ולזהות של האובייקט. לדוגמא, השדות שנוספו תוכן: גודל, נושא: חיטוי ומשנה: קצר להצגת מזהים עצמים קצרים. כמו כן, מותר לציין מספר רב של ארגומנטים "–ממוזג" ו" –לא מיזוג "לסינון קישורים.

כאשר מתרחש סכסוך במהלך פעולה של "מיזוג git", כותרת ההודעה של התחייבות נמצאת כעת בסוגריים להפרדה מפורשת יותר את נתוני ההתחייבות מהודעות האבחון של Git.

נוסף הגדרה חדשה "merge.renormalize", כאשר מוגדרים פעולות הצ'ק-אאוט והצ'ק-אין מבוצעות עבור כל שלב של שילוב תלת-כיווני.

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

האפשרות "–הורה הראשון" נוספה לפקודה "git bisect"כי משמש לזיהוי התיקון בו התרחש שינוי רגרסיבי, כדי לשנות את בחירת ההתחייבויות שעוברות בין סקירת העבודה הידועה לביקורת בה התרחשה הנושא. אם אתה מציין "–הורה הראשון", נספרות רק התחייבות לענף הממוזג, תוך התעלמות מההתחייבות למיזוג עצמו.

שיפור היעילות של הפקודה הפנימית "git index-pack" משמש בעת ביצוע "git push" או "git fetch" במקביל לאריזה של אינדקס במערכות מרובות ליבות.

התווספה ההגדרה "merge.suppressDest", השולטת על הוספת הביטוי "ב- $ dest" להודעות "מיזוג $ במעלה הזרם ל- $ dest" שהונפקו בעת מיזוג סניפים (בעבר הביטוי "ב- $ dest" לא הראה לסניף הראשי כברירת מחדל).

תוקנה את הפגיעות במערכת ה- backend "contrib / mw-to-git" (לא בנוי כברירת מחדל) כדי לדחוף ולאחזר נתונים מ- MediaWiki. הבעיה אפשרה לארגן את ביצוע הקוד בעת גישה למופע MediaWiki שהיה בשליטת תוקף.

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


תוכן המאמר עומד בעקרונותינו של אתיקה עריכתית. כדי לדווח על שגיאה לחץ כאן.

היה הראשון להגיב

השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי לנתונים: מיגל אנחל גטון
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.