我正在尝试使用 libgit2 管理存储库的索引与其 HEAD 树(通过 Objective-Git,但我越来越发现自己正朝着香草 libgit2 兔子洞前进),并且想知道 git_index_entry 结构上的 flags_extended 字段的位掩码到底是什么意思是。此外,这些标志何时设置?我一直在挖掘 libgit2 源代码,但似乎找不到 flags_extended 发挥作用的地方。
我问的原因:
我有一个简单的测试存储库,其中一个提交包含一些简单的测试文件。工作副本有一个带有微小更改的跟踪文件和一个未跟踪文件,这两个文件都已在外部暂存(git add .
在命令行上)。在我的应用程序中,我需要“取消暂存”文件,因此我获取了它们各自的 git_index_entry 结构。我期待 flags_extended 为修改后的文件设置 GIT_IDXENTRY_UPDATED 并为以前未跟踪的文件设置 GIT_IDXENTRY_ADDED ,但实际上两个 flags_extended 字段都是空的,这就是提示这个问题的原因(唯一设置的是标志字段中的 GIT_IDX_ENTRY_NAMEMASK ) .
我当然可以获取 HEAD 树并将条目与索引中的条目进行比较,但我希望 libgit2 已经通过 flags_extended 提供了该信息。