Gitとcolabを統合するための推奨される方法はありますか?
たとえば、Googleソースリポジトリやいいね!のコードを削除することは可能ですか?
Git機能には、Googleドライブもクラウドストレージも使用できません。
だから私はまだそれを行う方法があるのだろうかと思っていましたか?
git
がマシンにインストールされており、!
を使用してシェルコマンドを呼び出すことができます。
たとえば、git
リポジトリを複製するには:
!git clone https://github.com/fastai/courses.git
これは、リポジトリを複製し、そこに保存されているExcelファイルをロードする完全な例です。 https://colab.research.google.com/notebook#fileId=1v-yZk-W4YXOxLTLi7bekDw2ZWZXWW216
プライベートリポジトリのクローンを作成する場合、最も簡単な方法は次のとおりです。
!git clone https://username:[email protected]/username/repository.git
アカウントのユーザー名とパスワードを保護するには、getPass
を使用して、シェルコマンドでそれらを連結します。
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
Sshプロトコルを使用して、プライベートリポジトリをcolabに接続できます。
ローカルマシンでsshキーペアを生成し、保持することを忘れないでください
言い換えは空です。これを確認してください チュートリアル 。
それをcolabにアップロードし、以下を確認してください screenshot
from google.colab import files
uploaded = files.upload()
Ssh kayペアを/ rootに移動し、gitに接続します
! rm -rf /root/.ssh/*
! mkdir /root/.ssh
! tar -xvzf ssh.tar.gz
! cp ssh/* /root/.ssh && rm -rf ssh && rm -rf ssh.tar.gz
! chmod 700 /root/.ssh
! ssh-keyscan gitlab.com >> /root/.ssh/known_hosts
! chmod 644 /root/.ssh/known_hosts
! git config --global user.email "email"
! git config --global user.name "username"
! ssh [email protected]
プライベートリポジトリを認証します。これを確認してください リポジトリごとのデプロイキー 。
! [email protected]:{account}/{projectName}.git
を使用
注:プッシュを使用するには、書き込みアクセス権を付与する必要があります
gitサーバーの認証に使用する公開sshキー。
ほとんどこのリンクを使用できます: https://qiita.com/Rowing0914/items/51a770925653c7c528f9
上記のリンクの要約として、次の手順を実行する必要があります。
1-次のコマンドを使用して、Google ColabランタイムをGoogleドライブに接続します。
from google.colab import drive
drive.mount('/content/drive')
認証プロセスが必要です。必要なことは何でもします。
2-current directory
にGitプロジェクトのクローンを作成するパスを設定します。
私の例では:
path_clone = "drive/My Drive/projects"
!cd path_clone
cd
コマンドの先頭で!
を使用することを忘れないでください。
3-Gitプロジェクトのクローンを作成します。
!git clone <Git project URL address>
これで、クローンされたGitプロジェクトがGoogleドライブのprojects
フォルダーにあります(これもGoogle Colabランタイムマシンに接続されています)
4-(ブラウザーなどを使用して)Googleドライブに移動し、「プロジェクト」フォルダーに移動して.ipynb
ファイルを開きますGoogle Colabで使用したい。
5-これで、使用したい.ipynb
を含むGoogle Colabランタイムが得られましたこれもGoogleドライブに接続されていますクローンされたすべてのgitファイルはColabランタイムのストレージにあります。
注:
1- ColabランタイムがGoogleドライブに接続されていることを確認します。接続されていない場合は、上記の手順#1を繰り返します。
2-「pwd」および「cd」コマンドを使用して、current directory
がgoogleドライブのクローンgitプロジェクトに関連していることを再確認します(上記の手順2)。
Gitを使用してcolabをgithubまたはgitlabと同期する3つの手順。
秘密鍵と公開鍵のペアを生成します。手順2で使用するために、秘密キーをシステムクリボードにコピーします。必要に応じて、公開キーをgithubまたはgitlabに貼り付けます。
Linuxでは、ssh-keygenを使用して〜/ .sshにキーペアを生成できます。結果の秘密鍵はid_rsaファイルにあり、公開鍵はid_rsa.pubファイルにあります。
Colabで、実行
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
通常どおりgitを使用してプル/プッシュします。
同じ考えを、rsync bewteen colabとHostAに若干の変更を加えて使用できます。
Colabで、実行
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はIPでは機能しないようです。
これは、レポとコラボを共有する場合に機能します。複数のリポジトリがある場合にも機能します。セルに入れてください。
import ipywidgets as widgets
from IPython.display import display
import subprocess
class credentials_input():
def __init__(self, repo_name):
self.repo_name = repo_name
self.username = widgets.Text(description='Username', value='')
self.pwd = widgets.Password(description = 'Password', placeholder='password here')
self.username.on_submit(self.handle_submit_username)
self.pwd.on_submit(self.handle_submit_pwd)
display(self.username)
def handle_submit_username(self, text):
display(self.pwd)
return
def handle_submit_pwd(self, text):
cmd = f'git clone https://{self.username.value}:{self.pwd.value}@{self.repo_name}'
process = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE)
output, error = process.communicate()
print(output, error)
self.username.value, self.pwd.value = '', ''
get_creds = credentials_input('github.com/username/reponame.git')
get_creds
次を使用してドライブをマウントします。
from google.colab import drive
drive.mount('/content/drive/')
次に:
%cd /content/drive/
ドライブのレポを複製するには
!git clone <github repo url>
リポジトリから他のファイルにアクセスします(例:helper.pyはリポジトリ内の別のファイルです):
import imp
helper = imp.new_module('helper')
exec(open("drive/path/to/helper.py").read(), helper.__dict__)
プライベートgithub Googleのレポジトリcolabを複製する非常にシンプルで簡単な方法は次のとおりです。
import os
from getpass import getpass
import urllib
user = input('User name: ')
password = getpass('Password: ')
password = urllib.parse.quote(password) # your password is converted into url format
repo_name = input('Repo name: ')
cmd_string = 'https://{0}:{1}@github.com/{0}/{2}.git'.format(user, password, repo_name)
os.system(cmd_string)
cmd_string, password = "", "" # removing the password from the variable