קריאת ההיסטוריה

הערות לקומיט

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

git notes היא הדרך החוצה. הערה נשמרת לצד הקומיט, תחת refs/notes/commits, וצירוף שלה משאיר את הקומיט זהה בייט־בייט. כך שזה עובד על היסטוריה שכבר פורסמה — בדיוק המצב שבו הכי רוצים להוסיף משהו.

שימוש טיפוסי: הסקירה שאישרה אותו, הכרטיס שהוא סגר, למה הוא בוטל, באיזה ריליס הוא יצא.

כתיבת הערה

בחרו קומיט. מתחת להודעה יש מקטע הערה: הוספת הערה, הקלידו, שמירת ההערה. כמה שורות זה בסדר גמור.

כתיבת הערה מתחת להודעה של קומיט שנדחף, ואז שמירתה

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

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

איתור הערה

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

משורת הפקודה, git log --notes מדפיס אותן מתחת לכל הודעה.

שיתוף הערות

זה החלק שמפתיע את כולם: git push רגיל אינו דוחף הערות, ו־git fetch רגיל אינו מביא אותן. הן חיות מחוץ ל־refs/heads ול־refs/tags, ולכן ה־refspecs המוגדרים כברירת מחדל מדלגים עליהן לגמרי. הערות שנכתבו על הלפטופ שלכם נשארות על הלפטופ שלכם עד שמישהו מזיז אותן במפורש.

כלים ← הערה ← דחיפת הערות / הבאת הערות, לכל רימוט. הן מריצות:

git push <remote> refs/notes/commits
git fetch <remote> +refs/notes/commits:refs/notes/commits

רק ה־ref של הערות הקומיטים נוסע — ה־refs המקומיים־למכונה של Gitcito עצמו (כמו התוצאות של CI מקומי) אינם מתפרסמים, בכוונה.

חלק מהמארחים דורשים גם שהערות יהיו מופעלות או מותרות אצלם; דחייה שם היא מדיניות של המארח, לא מגבלה של Gitcito.

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

מגבלות

  • ref הערות אחד. Gitcito קורא וכותב את ברירת המחדל refs/notes/commits. מרחבי שמות מותאמים (git notes --ref=review) אינם חשופים — מאגר שמשתמש בהם לא יראה כאן את ההערות האלה.
  • אין מיזוג של הערות שהתפצלו. אם שני אנשים מבארים את אותו קומיט ושניהם דוחפים, git דוחה את הדחיפה השנייה. פתרון של זה פירושו git notes merge בטרמינל.
  • הערות אינן מגובות על ידי גיבוי טיהור ולא על ידי תמונות מצב. הן refs רגילים והן שורדות פעולות רגילות, אבל מאגר ששוכפל מחדש מאפס מתחיל בלעדיהן.

ראו גם: קומיטים · גרף הקומיטים

שיפור התרגום הזה ב־GitHub