libgit2 checkout options.paths 忽略否定前缀

libgit2 checkout options.paths ignores negation prefix

使用 libgit2 我正在尝试 运行 git_checkout_tree 我工作树中的所有文件,同时跳过一些特定文件。 像这样填充 git_checkout_options checkout_opts

char* p[2]= {"*", "!myFile.dat"};
checkout_opts.paths.strings = p;
checkout_opts.paths.count = 2;

仍然签出 myFile.dat(位于存储库根目录中)。我试图坚持使用 .gitignore 模式语法。我已经编译了 libgit2 并试图了解代码库。我看到 wildmatch.c 定义了一个 NEGATE_CLASS '!'和一个 NEGATE_CLASS '^'。不幸的是,使用 ^myFile.dat 不起作用。 libgit2 不支持模式否定还是我做错了什么?

issue 2263 开始,libgit2 尚不支持 sparse-checkout。

因此,git_checkout_tree 可能不支持最近的野外匹配(replacing fnmatch in PR 5110 一年前,2019 年 6 月)。
tests/checkout/tree.c.

中没有测试负路径