我正在尝试使用libgit2管理存储库的索引与其HEAD树(通过Objective-Git,但我越来越多地发现自己正在沿着香草libgit2兔子洞走下去),我想知道是什么git_index_entry struct上的flags_extended字段的位掩码实际上是指。另外,这些标志何时设置?我一直在挖掘libgit2源代码,但似乎找不到flags_extended的用途。
我问的原因是:
我有一个简单的测试存储库,其中一个提交包含一些简单的测试文件。工作副本有一个带有次要更改的跟踪文件和一个未跟踪文件,这两个文件都已在外部暂存(命令行上为git add .
)。在我的申请中,我需要" unstage"文件,所以我获取他们各自的git_index_entry结构。我希望flags_extended为修改后的文件设置GIT_IDXENTRY_UPDATED,为先前未跟踪的文件设置GIT_IDXENTRY_ADDED,但实际上两个flags_extended字段都是空的,这就是提示这个问题的内容(唯一设置的是flags字段中的GIT_IDX_ENTRY_NAMEMASK)
我当然可以获取HEAD树并将条目与索引中的条目进行比较,但我希望libgit2已经通过flags_extended提供了该信息。
答案 0 :(得分:0)
我希望flags_extended为修改后的文件设置GIT_IDXENTRY_UPDATED,为先前未跟踪的文件设置GIT_IDXENTRY_ADDED。
不,这些标志基本上是libgit2的内部标志。它们用于在从磁盘加载索引后维护有关索引条目的信息。它们是为了防止和/或检测内部数据争用,它们不用于确定存储库的状态。
如果要将HEAD与索引进行比较,请加载HEAD树,然后使用git_diff_tree_to_index
。