我正在尝试使用libgit2 (通过Objective)管理存储库的索引与其头树(通过Objective,但我越来越发现自己正沿着香草的libgit2兔子洞前进),我想知道flags_extended字段在git_index_entry结构上的比特掩码到底意味着什么。此外,这些标志什么时候设置?我一直在挖掘libgit2源代码,但似乎找不到flags_extended起作用的地方。
我问的原因是:
我有一个简单的测试存储库,其中包含一些简单的测试文件。工作副本有一个跟踪文件,有一个小更改和一个未跟踪文件,这两个文件都是外部执行的(命令行上的git add .
)。在我的应用程序中,我需要“卸载”这些文件,因此我获取它们各自的git_index_entry结构。我原以为flags_extended会为修改后的文件设置GIT_IDXENTRY_UPDATED,为以前未跟踪的文件设置GIT_IDXENTRY_ADDED,但实际上这两个flags_extended字段都是空的,这就是引发这个问题的原因(唯一的问题集是标志字段中的GIT_IDX_ENTRY_NAMEMASK )。
当然,我可以获取头树并将条目与索引中的条目进行比较,但我希望libgit2已经通过flags_extended提供了该信息。
发布于 2016-01-28 18:40:40
我希望flags_extended为修改后的文件设置GIT_IDXENTRY_UPDATED,为以前未跟踪的文件设置GIT_IDXENTRY_ADDED。
不,这些标志基本上是libgit2的内部标志。它们用于在从磁盘加载索引后维护有关内存中索引项的信息。它们是为了防止和/或检测内部数据竞争,而不是为了确定存储库的状态。
如果要将HEAD与索引进行比较,请加载HEAD树,然后使用git_diff_tree_to_index
。
https://stackoverflow.com/questions/35074326
复制