2016-10-28 6 views
2

これは、ローカル作業ディレクトリなしでリモートリポジトリにプッシュする際の質問に対するフォローアップの質問です(Python push files to Github remote repo without local working directory)。ファイルがすでにリモートリポジトリに存在していて、それを同じ名前の変更されたファイルで更新したいのですか? (例えば、Githubのウェブサイト上に相当、すでにリモートに存在するファイルの修正バージョンをアップロード)ローカル作業ディレクトリなしのGithubリモートリポジトリのPythonアップデートファイル

編集:私たちは解決策を作ってみた:

contents_object = repository.contents(file_path) 
push_status = contents_object.update("test_message",contents) 

しかし、これは実行中あるマシンで正常に実行された場合、別のマシンでエラーが発生しました(具体的には、最初の行にAttributeErrorが発生します)。 github3のバージョンが異なる可能性がありますか?

+0

APIと通信するためにパッケージを使用していますか?あなたの前の質問からの答えはgithub3を使っています。彼らの文書を見ましたか? – solarc

+0

申し訳ありませんが、元の投稿の回答が示唆しているように、github3を使用しています。私はドキュメントを見ましたが、ローカルの作業ディレクトリを必要とする方法はすぐに分かりませんでした。 – zangsir

答えて

1

今回のようあなたがpip install github3.pyhttps://github3py.readthedocs.io/en/master/#installation)を得るものであるgithub3バージョン0.9.6、下、これは(任意のローカルの作業ディレクトリなしでリモートリポジトリへの更新を行っている)動作することが明らかに思える:

def update_to_git(username,password,path,account,repo,message): 
    files_to_upload = [path] 
    gh = github3.login(username=username, password=password) 
    repository = gh.repository(account, repo) 
    for file_info in files_to_upload: 
     with open(file_info, 'rb') as fd: 
      contents = fd.read() 
     contents_object = repository.contents(file_info) 
     contents_object.update(message,contents) 

ただし、github3バージョン1.0.0a4を使用している場合は動作しません。具体的には、contents_object = repository.contents(file_info)行にAttributeErrorが表示されます。おそらく、github3の実装が変更されたためです。

+0

v1.0.0a4では、 'Repository.contents()'が 'Repository.directory_contents()'に分割されていました。 'Repository.file_contents()'。 – kfb

関連する問題