在 libgit2 中,git_index_entry->flags_extended 是什么意思(以及它们何时设置)?
In libgit2, what do the git_index_entry->flags_extended mean (and when are they set)?
我正在尝试使用 libgit2 管理存储库的索引与其 HEAD 树(通过 Objective-Git,但我越来越发现自己正朝着香草 libgit2 的兔子洞前进,并且想知道 flags_extended 字段在 git_index_entry 结构上的位掩码到底是什么意思。此外,这些标志何时设置?我一直在挖掘 libgit2 源代码,但似乎无法找到 flags_extended 发挥作用的地方。
我问的原因:
我有一个简单的测试存储库,其中一次提交包含一些简单的测试文件。工作副本有一个跟踪文件和一个未跟踪文件,两者都已在外部暂存(git add .
在命令行上)。在我的应用程序中,我需要 "unstage" 文件,因此我获取了它们各自的 git_index_entry 结构。我期待 flags_extended 为修改后的文件设置 GIT_IDXENTRY_UPDATED,为之前未跟踪的文件设置 GIT_IDXENTRY_ADDED,但实际上两个 flags_extended 字段都是空的,这就是提示了这个问题(唯一设置的是标志字段中的 GIT_IDX_ENTRY_NAMEMASK)。
我当然可以获取 HEAD 树并将条目与索引中的条目进行比较,但我希望 libgit2 已经通过 flags_extended.
提供了该信息
I was expecting the flags_extended to have GIT_IDXENTRY_UPDATED set for the modified file and GIT_IDXENTRY_ADDED set for the previously untracked file.
不,这些标志基本上是 libgit2 内部的。它们用于在从磁盘加载索引后在内存中维护有关索引条目的信息。它们是为了防止and/or检测内部数据竞争,它们不是用于确定您的存储库的状态。
如果要将HEAD与索引进行比较,加载HEAD树然后使用git_diff_tree_to_index
。
我正在尝试使用 libgit2 管理存储库的索引与其 HEAD 树(通过 Objective-Git,但我越来越发现自己正朝着香草 libgit2 的兔子洞前进,并且想知道 flags_extended 字段在 git_index_entry 结构上的位掩码到底是什么意思。此外,这些标志何时设置?我一直在挖掘 libgit2 源代码,但似乎无法找到 flags_extended 发挥作用的地方。
我问的原因:
我有一个简单的测试存储库,其中一次提交包含一些简单的测试文件。工作副本有一个跟踪文件和一个未跟踪文件,两者都已在外部暂存(git add .
在命令行上)。在我的应用程序中,我需要 "unstage" 文件,因此我获取了它们各自的 git_index_entry 结构。我期待 flags_extended 为修改后的文件设置 GIT_IDXENTRY_UPDATED,为之前未跟踪的文件设置 GIT_IDXENTRY_ADDED,但实际上两个 flags_extended 字段都是空的,这就是提示了这个问题(唯一设置的是标志字段中的 GIT_IDX_ENTRY_NAMEMASK)。
我当然可以获取 HEAD 树并将条目与索引中的条目进行比较,但我希望 libgit2 已经通过 flags_extended.
提供了该信息I was expecting the flags_extended to have GIT_IDXENTRY_UPDATED set for the modified file and GIT_IDXENTRY_ADDED set for the previously untracked file.
不,这些标志基本上是 libgit2 内部的。它们用于在从磁盘加载索引后在内存中维护有关索引条目的信息。它们是为了防止and/or检测内部数据竞争,它们不是用于确定您的存储库的状态。
如果要将HEAD与索引进行比较,加载HEAD树然后使用git_diff_tree_to_index
。