2

git fetch -aPython内で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)
4

1 に答える 1