Recuperação de script e migração de repositório

Se você excluir acidentalmente um script ou uma pasta dentro de um repositório no Editor de código do Earth Engine ou precisar migrar um repositório para uma nova conta, o histórico completo de commits será preservado nos registros do Git nos nossos servidores. Embora o ícone do repositório no Editor de código reverta um repositório inteiro para um estado anterior, a clonagem do repositório localmente com ferramentas de linha de comando Git padrão permite restaurar seletivamente scripts ou pastas individuais sem perder as mudanças mais recentes em outros scripts.

O que pode ser recuperado

Na guia Scripts do editor de código, seu trabalho é organizado como users/username/repository:folder/script:

  • Scripts e pastas (recuperáveis): a exclusão de um script ou pasta em um repositório só remove o item do commit mais recente. Como o repositório ainda existe em earthengine.googlesource.com, é possível clonar o repositório e restaurar os arquivos excluídos do histórico de commits do Git usando a Opção A ou a Opção B.
  • Repositórios inteiros (não recuperáveis): a exclusão de um repositório (users/username/repository) remove permanentemente o repositório Git, os scripts e o histórico de commits do earthengine.googlesource.com (retornando "Repository is not found"). Depois de excluído, um repositório não pode ser clonado nem recuperado.

Primeiro, conclua os pré-requisitos e escolha uma das opções a seguir, dependendo da sua tarefa:

Pré-requisitos

Etapa 1: gerar credenciais do Git

Como os repositórios Git hospedados pelo Google usam a autenticação de token seguro, primeiro gere suas credenciais locais do Git:

  1. Abra uma janela de navegação anônima ou particular no navegador da Web e acesse o gerador de senhas do Git: earthengine.googlesource.com/new-password Observação: faça login exclusivamente com sua Conta do Google registrada no Earth Engine. Se você estiver migrando um repositório para uma nova conta em Opção C, primeiro compartilhe o repositório antigo com sua nova conta e faça login aqui com sua nova Conta do Google.
  2. Copie todo o bloco de comandos de shell gerados mostrados na tela.
  3. Abra um terminal (linha de comando) no computador, cole os comandos copiados e execute-os. Isso configura automaticamente as credenciais de cookie do Git da sua máquina.
  4. Se esta for a primeira vez que você usa o Git no computador, configure seu nome e e-mail de autor para que o Git permita criar commits:

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

Etapa 2: clonar o repositório (opções A e B)

Se você estiver migrando um repositório entre contas, pule para a Opção C. Para restaurar um script ou pasta excluída, clone seu repositório no terminal local substituindo username e repository pelos detalhes do Earth Engine. Também é possível copiar o comando de clone exato clicando no ícone ao lado do nome do repositório na guia Scripts:

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

Quando terminar, navegue até a pasta clonada:

cd repository

Opção A: restaurar um script excluído

Para recuperar um arquivo de script excluído (por exemplo, MyScript ou MyFolder/MyScript):

  1. Confira o histórico do arquivo para encontrar o commit de exclusão e o commit imediatamente anterior a ele (listado logo após na saída do log):

    git log --oneline -- "MyScript"
    
  2. Restaure a última versão em que o arquivo ainda existia na sua pasta (substitua <commit_hash> pelo hash do commit anterior à exclusão ou use <deletion_commit_hash>~1):

    git checkout <commit_hash> -- "MyScript"
    
  3. Confirme e envie o script restaurado de volta para o servidor:

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

Depois de enviar, recarregue a guia Scripts do editor de código no navegador ou clique no botão na parte de cima da guia Scripts para ver o script restaurado.

Opção B: restaurar uma pasta excluída

Para recuperar uma pasta excluída e todos os scripts nela (por exemplo, MyFolder/):

  1. Verifique os registros de commit do Git para encontrar o commit de exclusão e o commit imediatamente anterior a ele (listado logo após na saída do registro):

    git log --oneline -- "MyFolder/"
    
  2. Restaure a última versão em que a pasta ainda existia na sua pasta (substitua <commit_hash> pelo hash do commit anterior à exclusão ou use <deletion_commit_hash>~1):

    git checkout <commit_hash> -- "MyFolder/"
    
  3. Confirme e envie a pasta recuperada de volta para o servidor:

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

Depois de enviar, recarregue a guia Scripts do Editor de código no navegador ou clique no botão na parte de cima da guia Scripts para ver a pasta restaurada.

Opção C: migrar um repositório inteiro

Se você precisar migrar um repositório inteiro e todo o histórico de commits para uma nova conta (por exemplo, ao fazer a transição entre contas institucionais e pessoais):

Credenciais e permissões: se você estiver migrando um repositório entre duas Contas do Google diferentes (por exemplo, de uma conta universitária ou de trabalho para uma conta pessoal), verifique se a nova conta tem permissão para ler o repositório antigo antes de começar:

  • Pré-requisito de compartilhamento: faça login na sua antiga conta do Editor de código, clique no ícone ao lado do nome do repositório antigo e compartilhe com o endereço de e-mail da sua nova Conta do Google, concedendo acesso de Leitor.
  • Assim, você só precisa fazer a autenticação no computador local uma vez (usando as credenciais do Git da nova conta geradas na Etapa 1). Sua nova conta terá permissão para clonar do repositório antigo e enviar para o novo, evitando conflitos de credenciais.
  1. Clone seu repositório antigo localmente usando o Git padrão:

    git clone https://earthengine.googlesource.com/users/old_username/old_repository
    
  2. Crie um repositório vazio no menu Novo > Repositório na sua nova conta do editor de código. Observação: não crie nem salve scripts ou pastas no novo repositório antes de fazer o push, ou ele vai falhar.

  3. Navegue até o diretório clonado local:

    cd old_repository
    
  4. Envie por push todo o histórico de commits e scripts locais diretamente para seu novo repositório vazio do Earth Engine:

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

Depois de fazer isso, recarregue a guia Scripts no Editor de código da sua nova conta ou clique no botão para ver o repositório e o histórico migrados.