כדי לשלוח שיבוט HTTPS אחד דרך פרוקסי בלי לשנות את סביבת תהליך Python או לכתוב הגדרת Git גלובלית, העבירו את המשתנים אל Repo.clone_from:

from git import Repo

repo = Repo.clone_from(
    'https://git.example/team/project.git',
    '/path/to/new-checkout',
    env={
        'http_proxy': 'http://proxy.example:8080',
        'https_proxy': 'http://proxy.example:8080',
    },
)

השתמשו בכתובת ה-URL של הפרוקסי ישירות במחרוזות Python. עבור מאגר ציבורי ומסלול שבו פרוקסים ציבוריים מותרים, רשימת פרוקסי HTTP מספקת נקודות קצה מועמדות. מרכאות קיבוץ של ה-shell אינן חלק מאותה כתובת. כתובת מאגר SSH עוקבת אחר תעבורת SSH במקום, ולכן הדוגמה הזו דורשת כתובת מאגר HTTPS.

אם Git עדיין בוחר מסלול אחר

מיפוי env מעדכן את הסביבה שתהליך המשנה של Git יורש; הוא אינו מחליף את הסביבה הזו בסביבה ריקה. בדקו ערכי no_proxy שעברו בירושה לצורך עקיפה, ובדקו את תצורת ה-http.proxy של Git עצמו, שעלולה לעקוף את הגדרת הסביבה המתאימה.

ייתכן שתיתקלו גם בדוגמאות שמעבירות config אל השיבוט. זה מפעיל את אפשרות ה---config של Git clone וכותב תצורה במאגר החדש. בחרו בכך רק כאשר ההגדרה צריכה לשרוד את תהליך השיבוט הזה; תצורת Git בזמן השיבוט לעומת רק בזמן הקריאה מסבירה את ההבדל.

מאמרים קשורים