首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从git-fast-import中读取目录(又名"cat-tree"?)

如何从git-fast-import中读取目录(又名"cat-tree"?)
EN

Stack Overflow用户
提问于 2015-12-24 01:47:27
回答 1查看 85关注 0票数 0

我正在开发一个Git前端,它使用git-fast-import向当前未签出的分支提交新的提交。在某些情况下,我实际上需要查看分支的内容。幸运的是,有cat-blob命令可以让我对文件执行此操作,但对于目录,此命令将失败:

代码语言:javascript
复制
% git rev-parse refs/heads/master
5feba4d2856f545df951482c5ca9416c7202b555
% git fast-import                      
ls 5feba4d2856f545df951482c5ca9416c7202b555 numbers
040000 tree 2ca1672d50c9dbfe582dc53af3c7ce9891a7a664    numbers
cat-blob 2ca1672d50c9dbfe582dc53af3c7ce9891a7a664
fatal: Object 2ca1672d50c9dbfe582dc53af3c7ce9891a7a664 is a tree but a blob was expected.
fast-import: dumping crash report to .git/fast_import_crash_11859
% 

其中numbersmaster分支顶层的目录,ls ...cat-blob ...是我输入的快速导入命令,其余的是Git对它们的回复。

我经常可以使用git cat-file -p refs/heads/master:numbers来获取所需的信息,但有时这些信息不会随着在快速导入中创建的更改而更新,此外,它往往会明显变慢,因为它不能在快速导入过程中重用活动树。

EN

回答 1

Stack Overflow用户

发布于 2016-01-17 00:38:49

同时,Jeff King给了我一个不太理想的解决方案,但它确实允许我在不运行N个Git实例的情况下获得N个目录的内容。

他建议我使用git cat-file --batch。与fast-import中的cat-blob相反,它在树上工作,尽管输出不是很好地打印,而是使用以下格式:

代码语言:javascript
复制
tree = tree_entry*
tree_entry = mode SP path NUL sha1
mode = ascii mode, in octal (e.g., "100644")
path = <any byte except NUL>*
sha1 = <any byte>{20}

解析它对我来说很不方便,直接从fast-import获得输出会更好,但同时,这总比没有好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34441100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档