שחזור סקריפטים והעברת מאגר

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

מה אפשר לשחזר

בכרטיסייה Scripts (סקריפטים) בכלי לעריכת קוד, העבודה שלכם מאורגנת כך: users/username/repository:folder/script

  • סקריפטים ותיקיות (ניתנים לשחזור): מחיקה של סקריפט או תיקייה במאגר מסירה אותם רק מההתחייבות האחרונה. מאחר שהמאגר עדיין קיים ב-earthengine.googlesource.com, אפשר לשכפל את המאגר ולשחזר את הקבצים שנמחקו מהיסטוריית ה-commit של Git באמצעות אפשרות א' או אפשרות ב'.
  • מאגרי מידע שלמים (לא ניתן לשחזור): מחיקה של מאגר מידע (users/username/repository) מסירה לצמיתות את מאגר ה-Git, את הסקריפטים ואת היסטוריית הקומיטים שלו מ-earthengine.googlesource.com (מחזירה "Repository is not found"). אחרי המחיקה, אי אפשר לשכפל או לשחזר מאגר מידע.

קודם משלימים את הדרישות המוקדמות, ואז בוחרים באחת מהאפשרויות הבאות בהתאם למשימה:

דרישות מוקדמות

שלב 1: יצירת פרטי כניסה ל-Git

מאחר שמאגרי Git שמתארחים ב-Google משתמשים באימות מאובטח של אסימונים, צריך קודם ליצור את פרטי הכניסה המקומיים של Git:

  1. פותחים חלון פרטי או חלון גלישה פרטית בדפדפן האינטרנט ועוברים אל מחולל הסיסמאות של Git: earthengine.googlesource.com/new-password (הערה: צריך להיכנס רק באמצעות חשבון Google שרשום ב-Earth Engine. אם מעבירים מאגר לחשבון חדש לפי אפשרות ג', קודם צריך לשתף את המאגר הישן עם החשבון החדש ולהיכנס לכאן עם חשבון Google החדש.)
  2. מעתיקים את כל בלוק פקודות ה-Shell שמופיע במסך.
  3. פותחים טרמינל (שורת פקודה) במחשב, מדביקים את הפקודות שהועתקו ומריצים אותן. הפעולה הזו מגדירה באופן אוטומטי את פרטי הכניסה של קובץ ה-Cookie של Git במחשב.
  4. אם זו הפעם הראשונה שאתם משתמשים ב-Git במחשב, תצטרכו להגדיר את שם המחבר וכתובת האימייל כדי ש-Git יאפשר לכם ליצור קומיטים:

    git config --global user.name "Your Name"
    git config --global user.email "you@example.com"
    

שלב 2: משכפלים את המאגר (אפשרויות א' ו-ב')

אם מעבירים מאגר בין חשבונות, מדלגים אל אפשרות ג'. כדי לשחזר סקריפט או תיקייה שנמחקו, משכפלים את המאגר במסוף המקומי. לשם כך, מחליפים את username ואת repository בפרטים של Earth Engine (אפשר גם להעתיק את פקודת השכפול המדויקת בלחיצה על הסמל לצד שם המאגר בכרטיסייה Scripts):

git clone https://earthengine.googlesource.com/users/username/repository

אחרי שמסיימים, עוברים לתיקייה המשוכפלת:

cd repository

אפשרות א': שחזור תסריט שנמחק

כדי לשחזר קובץ סקריפט שנמחק (לדוגמה, MyScript או MyFolder/MyScript):

  1. כדי למצוא את קומיט המחיקה ואת הקומיט שקדם לו (מופיע מיד אחריו בפלט היומן), צריך לעיין בהיסטוריה של הקובץ:

    git log --oneline -- "MyScript"
    
  2. משחזרים את הגרסה האחרונה שבה הקובץ עדיין היה קיים לתיקייה (מחליפים את <commit_hash> בגיבוב של הקומיט לפני המחיקה, או משתמשים ב-<deletion_commit_hash>~1):

    git checkout <commit_hash> -- "MyScript"
    
  3. מבצעים Commit ודוחפים את הסקריפט המשוחזר בחזרה לשרת:

    git commit -m "Restore MyScript from history"
    git push origin
    

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

אפשרות ב': שחזור תיקייה שנמחקה

כדי לשחזר תיקייה שנמחקה ואת כל הסקריפטים שבה (לדוגמה, MyFolder/):

  1. בודקים את יומני ה-commit של Git כדי למצוא את ה-commit של המחיקה ואת ה-commit שקדם לו (מופיע מיד אחריו בפלט של היומן):

    git log --oneline -- "MyFolder/"
    
  2. משחזרים את הגרסה האחרונה שבה התיקייה עדיין הייתה קיימת לתיקייה שלכם (מחליפים את <commit_hash> בגיבוב של הקומיט לפני המחיקה, או משתמשים ב-<deletion_commit_hash>~1):

    git checkout <commit_hash> -- "MyFolder/"
    
  3. מבצעים Commit ו-Push של התיקייה המשוחזרת בחזרה לשרת:

    git commit -m "Restore MyFolder and all its scripts"
    git push origin
    

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

אפשרות ג': העברה של מאגר שלם

אם אתם צריכים להעביר מאגר שלם ואת היסטוריית ההתחייבויות המלאה שלו לחשבון חדש (לדוגמה, כשעוברים בין חשבון מוסדי לחשבון אישי):

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

  • הדרישה המוקדמת לשיתוף: נכנסים לחשבון הישן בכלי Code Editor, לוחצים על סמל לצד השם של המאגר הישן ומשתפים אותו עם כתובת האימייל בחשבון Google החדש, תוך מתן גישת קריאה.
  • כך תצטרכו לבצע אימות במחשב המקומי שלכם רק פעם אחת (באמצעות פרטי הכניסה ל-Git של החשבון החדש שנוצרו בשלב 1). לחשבון החדש יהיו הרשאות לשכפל מהמאגר הישן ולדחוף למאגר החדש, וכך יימנעו התנגשויות בין פרטי הכניסה.
  1. משכפלים את המאגר הישן באופן מקומי באמצעות Git רגיל:

    git clone https://earthengine.googlesource.com/users/old_username/old_repository
    
  2. יוצרים מאגר חדש וריק דרך התפריט New > Repository בחשבון החדש של Code Editor. (הערה: אל תיצרו או תשמרו סקריפטים או תיקיות במאגר החדש לפני שתבצעו את הפעולה push, אחרת הפעולה תיכשל).

  3. מנווטים לספרייה המקומית המשוכפלת:

    cd old_repository
    
  4. דחיפה של כל היסטוריית ההתחייבויות והסקריפטים המקומיים ישירות למאגר החדש והריק של Earth Engine:

    git push https://earthengine.googlesource.com/users/new_username/new_repository --all
    

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