web-dev-qa-db-fra.com

Méthodes d'utilisation de Git avec Google Colab

Existe-t-il des méthodes recommandées pour intégrer git à colab?

Par exemple, est-il possible de travailler hors code à partir de référentiels source Google ou de goûts similaires?

Ni Google Drive, ni le stockage en nuage ne peuvent être utilisés pour la fonctionnalité git.

Alors je me demandais s'il y avait un moyen de le faire encore?

18
Prashanth

Afin de protéger le nom d'utilisateur et le mot de passe de votre compte, vous pouvez utiliser getPass et les concaténer dans la commande Shell:

from getpass import getpass
import os

user = getpass('BitBucket user')
password = getpass('BitBucket password')
os.environ['BITBUCKET_AUTH'] = user + ':' + password

!git clone https://[email protected]/{user}/repository.git
8
Marafon Thiago

Si vous souhaitez cloner un référentiel privé, le moyen le plus rapide serait:

!git clone https://username:[email protected]/username/repository.git

7
Paulius Venclovas

Trois étapes pour utiliser git pour synchroniser colab avec github ou gitlab.

  1. Générez une paire de clés privée-publique. Copiez la clé privée sur le clibboard du système pour l’utiliser à l’étape 2. Collez la clé publique dans github ou gitlab selon le cas.

    Sous Linux, ssh-keygen peut être utilisé pour générer la paire de clés dans ~/.ssh. La clé privée résultante est dans le fichier id_rsa, la clé publique dans le fichier id_rsa.pub.

  2. En Colab, exécutez 

key = \ ''' paste the private key here ''' ! mkdir -p /root/.ssh with open(r'/root/.ssh/id_rsa', 'w', encoding='utf8') as fh: fh.write(key) ! chmod 600 /root/.ssh/id_rsa ! ssh-keyscan github.com >> /root/.ssh/known_hosts

  1. Utilisez git pour tirer/pousser comme d'habitude.

La même idée peut être utilisée pour rsync entre colonnes et HostA avec des modifications mineures: 

  1. Générez une paire de clés privée-publique. Copiez la clé privée sur le clibboard du système pour l’utiliser à l’étape 2. Collez la clé publique dans la clé author_keys de .ssh dans HostA.
  2. En Colab, exécutez 

key = \ ''' paste the private key here ''' ! mkdir -p /root/.ssh with open(r'/root/.ssh/id_rsa', 'w', encoding='utf8') as fh: fh.write(key) ! chmod 600 /root/.ssh/id_rsa ! ssh -oStrictHostKeyChecking=no root@HostA hostnam # ssh-keyscan HostA >> /root/.ssh/known_hosts does not seem to work with IP.

  1. Utilisez rsync pour synchroniser les fichiers bewtenn colab et HostA comme d’habitude.
1
cong yu

Vous pouvez presque utiliser ce lien: https://qiita.com/Rowing0914/items/51a770925653c7c528f9

en tant que résumé du lien ci-dessus, procédez comme suit:

1- Connectez votre environnement d'exécution google colab à votre lecteur google en utilisant ces commandes:

from google.colab import drive
drive.mount('/content/drive')

Il faudrait un processus d'authentification. Faites ce qu'il faut.

2- Définissez le chemin que vous voulez cloner le projet Git ici: Dans mon exemple:

cd "drive/My Drive/projects"

3- Cloner le projet Git:

!git clone <git project address>

maintenant vous auriez le projet dans le dossier "projets" dans votre Google Drive

4- Ouvrez Google Drive et allez dans le dossier "projets" et ouvrez le fichier ".ipynb" que vous souhaitez utiliser avec Google Colab.

5- Vous avez maintenant un environnement d'exécution Google Colab avec les codes que vous souhaitez utiliser qui sont connectés à Google Drive et tous les fichiers du git cloné se trouvent dans le stockage d'exécution.

Remarque: 

1- Vérifiez que votre runtime Colab est connecté à Google Drive. S'il n'est pas connecté, répétez l'étape n ° 1 ci-dessus.

2- Vérifiez avec les commandes "pwd" et "cd" que le chemin actuel est lié au projet git cloné dans google Drive.

1
Sharifirad

Montez le lecteur en utilisant: 

from google.colab import drive
drive.mount('/content/drive/')

Ensuite:

%cd /content/drive/

Pour cloner le repo dans votre lecteur

!git clone <github repo url> 

Accédez à d'autres fichiers depuis le référentiel (exemple: helper.py est un autre fichier dans le référentiel):

import imp 
helper = imp.new_module('helper')
exec(open("drive/path/to/helper.py").read(), helper.__dict__)
0
Ish