Recupero degli script e migrazione del repository

Se elimini accidentalmente uno script o una cartella all'interno di un repository nell'editor di codice di Earth Engine o devi eseguire la migrazione di un repository a un nuovo account, la cronologia completa dei commit viene conservata nei log Git sui nostri server. Mentre l'icona del repository nell'editor di codice ripristina un intero repository a uno stato precedente, la clonazione del repository in locale con gli strumenti a riga di comando Git standard consente di ripristinare selettivamente singoli script o cartelle senza perdere le modifiche più recenti apportate ad altri script.

Elementi recuperabili

Nella scheda Script dell'editor di codice, il tuo lavoro è organizzato come users/username/repository:folder/script:

  • Script e cartelle (recuperabili): l'eliminazione di uno script o di una cartella all'interno di un repository lo rimuove solo dall'ultimo commit. Poiché il repository stesso esiste ancora su earthengine.googlesource.com, puoi clonare il repository e ripristinare i file eliminati dalla cronologia dei commit Git utilizzando l'opzione A o l'opzione B.
  • Interi repository (non recuperabili): l'eliminazione di un repository (users/username/repository) rimuove definitivamente il repository Git, i relativi script e la cronologia dei commit da earthengine.googlesource.com (restituendo "Repository is not found"). Una volta eliminato, un repository non può essere clonato o recuperato.

Completa prima i prerequisiti, poi scegli una delle seguenti opzioni a seconda dell'attività:

Prerequisiti

Passaggio 1: genera le credenziali Git

Poiché i repository Git ospitati da Google utilizzano l'autenticazione con token sicuro, devi prima generare le credenziali Git locali:

  1. Apri una finestra di navigazione in incognito o privata nel browser web e visita il generatore di password Git: earthengine.googlesource.com/new-password (Nota: accedi esclusivamente con il tuo Account Google registrato su Earth Engine. Se esegui la migrazione di un repository a un nuovo account in Opzione C, condividi prima il vecchio repository con il nuovo account e accedi qui con il tuo nuovo Account Google.)
  2. Copia l'intero blocco di comandi della shell generati visualizzati sullo schermo.
  3. Apri un terminale (riga di comando) sul computer, incolla i comandi copiati ed eseguili. In questo modo vengono configurate automaticamente le credenziali cookie Git della macchina.
  4. Se è la prima volta che utilizzi Git sul computer, configura il nome e l'email dell'autore in modo che Git ti consenta di creare commit:

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

Passaggio 2: clona il repository (opzioni A e B)

Se esegui la migrazione di un repository tra account, vai all'opzione C. Per ripristinare uno script o una cartella eliminati, clona il repository nel terminale locale sostituendo username e repository con i dettagli di Earth Engine (puoi anche copiare il comando di clonazione esatto facendo clic sull'icona accanto al nome del repository nella scheda Script):

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

Al termine, vai alla cartella clonata:

cd repository

Opzione A: ripristinare uno script eliminato

Per recuperare un file di script eliminato (ad esempio MyScript o MyFolder/MyScript):

  1. Visualizza la cronologia del file per trovare il commit di eliminazione e il commit immediatamente precedente (elencato subito dopo nell'output del log):

    git log --oneline -- "MyScript"
    
  2. Ripristina l'ultima versione in cui il file esisteva ancora nella tua cartella (sostituisci <commit_hash> con l'hash del commit precedente all'eliminazione o utilizza <deletion_commit_hash>~1):

    git checkout <commit_hash> -- "MyScript"
    
  3. Esegui il commit e il push dello script ripristinato sul server:

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

Una volta eseguito il push, ricarica la scheda Script dell'editor di codice nel browser (o fai clic sul pulsante nella parte superiore della scheda Script) per visualizzare lo script ripristinato.

Opzione B: ripristinare una cartella eliminata

Per recuperare una cartella eliminata e tutti gli script al suo interno (ad esempio, MyFolder/):

  1. Controlla i log dei commit Git per trovare il commit di eliminazione e il commit immediatamente precedente (elencato subito dopo nell'output del log):

    git log --oneline -- "MyFolder/"
    
  2. Ripristina l'ultima versione in cui la cartella esisteva ancora nella tua cartella (sostituisci <commit_hash> con l'hash del commit precedente all'eliminazione o utilizza <deletion_commit_hash>~1):

    git checkout <commit_hash> -- "MyFolder/"
    
  3. Esegui il commit e il push della cartella recuperata sul server:

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

Una volta eseguito il push, ricarica la scheda Script dell'editor di codice nel browser (o fai clic sul pulsante nella parte superiore della scheda Script) per visualizzare la cartella ripristinata.

Opzione C: migrare un intero repository

Se devi eseguire la migrazione di un intero repository e della relativa cronologia completa dei commit a un nuovo account (ad esempio, quando passi da un account istituzionale a uno personale):

Credenziali e autorizzazioni: Se esegui la migrazione di un repository tra due Account Google diversi (ad esempio, da un account di lavoro o dell'università a un account personale), devi assicurarti che il nuovo account abbia l'autorizzazione a leggere il vecchio repository prima di iniziare:

  • Prerequisito per la condivisione: accedi al tuo vecchio account editor di codice, fai clic sull'icona accanto al nome del vecchio repository e condividilo con il tuo nuovo indirizzo email dell'Account Google, concedendo l'accesso di Lettore.
  • In questo modo, devi eseguire l'autenticazione sul computer locale una sola volta (utilizzando le credenziali Git del nuovo account generate nel passaggio 1). Il nuovo account avrà l'autorizzazione sia per clonare dal vecchio repository sia per eseguire il push nel nuovo, evitando conflitti di credenziali.
  1. Clona il vecchio repository in locale utilizzando Git standard:

    git clone https://earthengine.googlesource.com/users/old_username/old_repository
    
  2. Crea un nuovo repository vuoto dal menu Nuovo > Repository nel tuo nuovo account Editor di codice. (Nota: non creare o salvare script o cartelle nel nuovo repository prima del push, altrimenti l'operazione non andrà a buon fine.)

  3. Vai alla directory locale clonata:

    cd old_repository
    
  4. Esegui il push dell'intera cronologia dei commit locali e degli script direttamente nel nuovo repository Earth Engine vuoto:

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

Una volta eseguito il push, ricarica la scheda Script nell'editor di codice del nuovo account (o fai clic sul pulsante ) per visualizzare il repository e la cronologia di cui è stata eseguita la migrazione.