- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
有这个代码
from dulwich.objects import Blob, Tree, Commit, parse_timezone
from dulwich.repo import Repo
from time import time
repo = Repo.init("myrepo", mkdir=True)
blob = Blob.from_string("my file content\n")
tree = Tree()
tree.add("spam", 0100644, blob.id)
commit = Commit()
commit.tree = tree.id
author = "Flav <foo@bar.com>"
commit.author = commit.committer = author
commit.commit_time = commit.author_time = int(time())
tz = parse_timezone('+0200')[0]
commit.commit_timezone = commit.author_timezone = tz
commit.encoding = "UTF-8"
commit.message = "initial commit"
o_sto = repo.object_store
o_sto.add_object(blob)
o_sto.add_object(tree)
o_sto.add_object(commit)
repo.refs["HEAD"] = commit.id
我最终在历史记录中进行了提交,但是创建的文件正在等待删除(git status
这么说)。
git checkout .
修复了它。
我的问题是:如何使用 dulwich 以编程方式执行 git checkout .
?
最佳答案
Git 状态显示它已被删除,因为工作副本中不存在该文件,这就是为什么检查它可以修复状态。
dulwich 中似乎还不支持高级工作副本类和函数。您必须处理树和 Blob 以及解包对象。
好的,接受挑战:我可以与 Dulwich 进行基本 checkout :
#get repository object of current directory
repo = Repo('.')
#get tree corresponding to the head commit
tree_id = repo["HEAD"].tree
#iterate over tree content, giving path and blob sha.
for entry in repo.object_store.iter_tree_contents(tree_id):
path = entry.in_path(repo.path).path
dulwich.file.ensure_dir_exists(os.path.split(path)[0])
with open(path, 'wb') as file:
#write blob's content to file
file.write(repo[entry.sha].as_raw_string())
它不会删除必须删除的文件,不会关心你的索引等。
另见 Mark Mikofski's github project以获得基于此的更完整的代码。
关于python - 以编程方式 `git checkout .` 与 dulwich,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6640546/
我想知道如何使用 dulwich 执行与 git status 等效的操作? 我试过这个: 在添加/更改/重命名一些文件并将它们暂存以供提交后,这就是我尝试做的事情: from dulwich.rep
在git命令行中,我们可以使用git commit -a。 我如何使用 dulwich 做到这一点? 最佳答案 考虑提交的各种测试时,如 test_repository.py 中的那些,这似乎不可能在
我需要使用 python 指定文件的作者姓名和上次提交时间。目前,我正在尝试使用 dulwich . 有很多 API 可以检索特定 SHA 的对象,例如: repo = Repo("myrepo")
是否有任何关于通过 HTTPS 访问和获取远程存储库的好示例?我有一个 Git 存储库,我可以使用我的用户名和密码从命令行克隆它,但我希望能够使用 Dulwich 执行此操作,并且在创建 HTTPS
我喜欢Dulwich项目,因为它提供了与 git 交互的纯 Python 接口(interface)。 虽然它看起来相当低级...虽然我找不到有关如何执行简单任务的引用。 我的需求非常简单,提供与以下
我使用 git 来远程数据。这是我的代码。 from dulwich.repo import Repo from dulwich.server import DictBackend, TCPGitSe
有这个代码 from dulwich.objects import Blob, Tree, Commit, parse_timezone from dulwich.repo import Repo f
我在使用 python 检索 git 存储库的以下信息时遇到问题: 我想获取此存储库所有标签的列表。 我想 checkout 另一个分支并创建一个新分支用于暂存。 我想用带注释的标签来标记提交。 我查
如何向索引添加内容,如 git add . 然后 git commit -m "message" 然后 git push origin master 使用德威? 到目前为止,我已经找到了这个 http
我正在尝试在 Windows(具体来说是 Windows 7 64 位)上使用 hg-git Mercurial 扩展。我安装了 Mercurial 和 Git。我安装了 Python 2.5(32
当我尝试执行pip install dulwich时,我最终看到了一堵红色的墙,提示clang。这是最后一点: Please check your Xcode installation
我是一名优秀的程序员,十分优秀!