סנכרון והרבה מאגרים

תצוגה מקדימה של בקשת משיכה

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

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

תצוגה מקדימה מקומית: בחרו את הרימוט, את בקשת המשיכה, ואיך להחיל אותה

מארח היכן ראש הבקשה חי
GitHub, GitHub Enterprise, Gitea, Forgejo, Gogs refs/pull/<n>/head
GitLab (בענן ובאירוח עצמי) refs/merge-requests/<n>/head
Bitbucket Cloud, Bitbucket Server refs/pull-requests/<n>/from
Azure DevOps refs/pull/<n>/merge

Gitcito בודק את כל הארבעה ב־ls-remote יחיד, ולכן מארח לא מוכר או באירוח עצמי עובד כל עוד הוא עוקב אחרי אחת מהמוסכמות האלה.

פתיחה

  • רשימת בקשות המשיכה בסרגל הצד — כפתור החץ שבכל רשומה. זה עובד לכל מארח, בניגוד לתצוגת הפרטים, שהיא ל־GitHub בלבד.
  • פלטת הפקודות: תצוגה מקדימה מקומית של בקשת משיכה.
  • בתוך תצוגת הפרטים של בקשת משיכה, ליד כפתור ״פתיחה בדפדפן״.

מה אתם נותנים לה

רימוט — המאגר שמולו נפתחה בקשת המשיכה, בדרך כלל origin. לא הפורק.

בקשת משיכה — המספר, או כתובת דפדפן מודבקת. 7, #7 ו־https://github.com/owner/repo/pull/7 כולם עובדים; וכך גם צורות הכתובת של GitLab, Bitbucket ו־Azure DevOps. לחצו איתור ו־Gitcito ידווח על ה־ref שהוא פענח ועל הקומיט שהוא מצביע עליו, עוד לפני שמובא משהו.

ענף מרוחק — הלשונית השנייה, למקרה שאין ref של בקשת משיכה למצוא: מארח שאינו מפרסם אותם, או ענף שאתם פשוט רוצים לנסות. תנו את שם הענף כפי שהוא קיים ברימוט.

שתי הדרכים להחיל אותה

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

מצב מה קורה איך מבטלים
ענף מקומי ה־ref מובא לענף משלו (pr/7 כברירת מחדל) ועובר צ׳קאאוט. שאר הענפים שלכם לא נגועים. ביטול מחזיר לענף שהייתם עליו ומוחק את ענף התצוגה המקדימה.
מיזוג שלא ביצעתם לו קומיט ה־ref ממוזג לענף הנוכחי עם --no-commit --no-ff, והעץ המשולב נשאר בסטייג׳ כדי שתוכלו לבנות ולבדוק אותו. ביטול מבטל את המיזוג.

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

מה היא לא תעשה

  • היא לא יכולה להמציא ref שהמארח אינו מפרסם. חלק מהתצורות באירוח עצמי מכבות refs של בקשות משיכה; חלק מהמארחים מעולם לא היו להם. תקבלו ״אין ref ל־#n״ ברור, ולשונית הענף המרוחק כדרך המוצא.
  • היא אינה מביאה תגיות. תצוגה מקדימה לא אמורה לגרור את מרחב התגיות של מישהו אחר לתוך המאגר שלכם.
  • מצב המיזוג דורש עץ עבודה נקי. git מסרב למזג מעל עבודה שלא נכנסה לקומיט; סטאש קודם.
  • תצוגה מקדימה אינה סקירה. היא שמה את הקוד על המחשב שלכם — היא לא מאשרת, לא מגיבה ולא ממזגת דבר. זה אירוח ובקשות משיכה.
  • פורקים פרטיים נשארים פרטיים. ה־ref של בקשת המשיכה מוגש על ידי מאגר היעד, ולכן הגישה נגזרת מהאישורים שלכם לאותו רימוט — ראו אבטחה.

ניקיון

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

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