How to pull from the remote using dulwich?

风流意气都作罢 提交于 2019-12-07 06:40:07

问题


How to do something like git pull in python dulwich library.


回答1:


I haven't used dulwich, but from these doc's, possibly something like:

from dulwich.repo import Repo
from dulwich.client import HttpGitClient
local = Repo.init("local", mkdir=True)
client = HttpGitClient('http://github.com/adammorris/')
remote_refs = client.fetch("history.js.git",local)
local["HEAD"] = remote_refs["refs/heads/master"]

At this point, it didn't load the files, but I could do "git checkout" from the local path, and it updated the files.

Also, saw these:

  • https://lists.launchpad.net/dulwich-users/msg00118.html
  • Programmatically `git checkout .` with dulwich



回答2:


Full example. Works with Bitbucket.

from dulwich import index
from dulwich.client import HttpGitClient
from dulwich.repo import Repo

local_repo = Repo.init(LOCAL_FOLDER, mkdir=True)
remote_repo = HttpGitClient(REMOTE_URL, username=USERNAME, password=PASSWORD)
remote_refs = remote_repo.fetch(REMOTE_URL, local_repo)
local_repo[b"HEAD"] = remote_refs[b"refs/heads/master"]

index_file = local_repo.index_path()
tree = local_repo[b"HEAD"].tree
index.build_index_from_tree(local_repo.path, index_file, local_repo.object_store, tree)

Replace LOCAL_FOLDER, REMOTE_URL, USERNAME, PASSWORD with your data.



来源:https://stackoverflow.com/questions/11965471/how-to-pull-from-the-remote-using-dulwich

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!