git fetch -a
Python内でdulwichライブラリを使用するのと同等のことをしようとしています。
https://www.dulwich.io/docs/tutorial/remote.htmlのドキュメントを使用して、次のスクリプトを作成しました。
from dulwich.client import LocalGitClient
from dulwich.repo import Repo
import os
home = os.path.expanduser('~')
local_folder = os.path.join(home, 'temp/local'
local = Repo(local_folder)
remote = os.path.join(home, 'temp/remote')
remote_refs = LocalGitClient().fetch(remote, local)
local_refs = LocalGitClient().get_refs(local_folder)
print(remote_refs)
print(local_refs)
の既存の git リポジトリ~/temp/remote
と の新しく初期化されたリポジトリ~/temp/local
remote_refs
私が期待するすべてを示していますlocal_refs
が、空の辞書でありgit branch -a
、ローカルリポジトリでは何も返しません。
明らかな何かが欠けていますか?
これは dulwich 0.12.0 と Python 3.5 にあります。
編集#1
python-uk irc チャンネルでの議論に続いて、スクリプトを更新して次の使用を含めましたdetermine_wants_all
。
from dulwich.client import LocalGitClient
from dulwich.repo import Repo
home = os.path.expanduser('~')
local_folder = os.path.join(home, 'temp/local'
local = Repo(local_folder)
remote = os.path.join(home, 'temp/remote')
wants = local.object_store.determine_wants_all
remote_refs = LocalGitClient().fetch(remote, local, wants)
local_refs = LocalGitClient().get_refs(local_folder)
print(remote_refs)
print(local_refs)
しかし、これは効果がありませんでした:-(
編集#2
繰り返しになりますが、python-uk irc チャンネルでの議論に続いてdulwich fetch
、ローカル リポジトリ内から実行してみました。私のスクリプトと同じ結果が得られました。つまり、リモート参照がコンソールに正しく出力されましたが、git branch -a
何も表示されませんでした。
編集 - 解決済み
ローカル参照を更新する単純なループでうまくいきました。
from dulwich.client import LocalGitClient
from dulwich.repo import Repo
import os
home = os.path.expanduser('~')
local_folder = os.path.join(home, 'temp/local')
local = Repo(local_folder)
remote = os.path.join(home, 'temp/remote')
remote_refs = LocalGitClient().fetch(remote, local)
for key, value in remote_refs.items():
local.refs[key] = value
local_refs = LocalGitClient().get_refs(local_folder)
print(remote_refs)
print(local_refs)