Pythonを使ってGitHubのHTTPS通信でファイルを管理を自動化[初心者向け]

プログラミング
スポンサーリンク

SSH接続の設定をしている方は簡単にできるのですが、いろいろな事情があってHTTPS通信を利用したい人もいると思うので、Pythonを用いてHTTPS通信でファイルを管理する方法を書いていきたいと思います。

ちなみに、プライベートリポジトリにも対応しています。

環境
Debian 
Python3.6-
* Linux OSでなくても、ソースコードのPathの書き方を変えることで対応可能です。

Pythonのソースコード

いきなりですが、ソースコードを貼りたいと思います。

import subprocess
proc_add = subprocess.run(['git', 'add', '/path/to/your/object'] ,stdout = subprocess.PIPE, stderr = subprocess.PIPE, cwd = "/path/to/your/run/dir")
print(proc_add.stdout.decode("utf8"))
print(proc_add.stderr.decode("utf8"))

try:
    proc_commit = subprocess.run(['git', 'commit', '-m', '"github test"'] ,stdout = subprocess.PIPE, stderr = subprocess.PIPE, cwd = "/path/to/your/run/dir")
    print(proc_commit.stdout.decode("utf8"))
    print(proc_commit.stderr.decode("utf8"))
except:
    print("変更がないのでcommitできません")
    
try:
    url = "https://{your_user_name}:{your_passwd}@github.com/path/to/repo" 
    proc_push = subprocess.run(['git', 'push', url, ] ,stdout = subprocess.PIPE, stderr = subprocess.PIPE, cwd = "/path/to/your/run/dir")
    print(proc_push.stdout.decode("utf8"))
    print(proc_push.stderr.decode("utf8"))
except:
    print("pushできませんでした")

Pythonのソースコードの解説

/path/to/your/objectの部分は
例えば「git  add .」と打つ場合は「.」と指定します。

cwd = “/path/to/your/run/dir”の部分は
「.gitフォルダ」のあるディレクトリを指定してください。

url = “https://{your_user_name}:{your_passwd}@github.com/path/to/repo”の部分は
例えば、{your_user_name}がhogepiyo, {your_passwd}がpasswd。そして、「Download URL」が画像のような場合は以下のようになります。

url = "https://hogepiyo:[email protected]黒塗りされている部分"
os.path.join()を使ったり、例外処理をちゃんと書いたりしたほうがほ、汎用性向上とバグ予防に役立つと思うのでそこらへんは各自で工夫してください。
また、パスワードのべた張りが心配だという人は外部から読み込むようにしてください。

参考文献

subprocessの使い方(Python3.6)
subprocessについてより深く(3系,更新版)
pythonからterminalを操作する (subprocess)

タイトルとURLをコピーしました