Как я могу создать пустой коммит с помощью libgit2?

Я просматривал ссылку на C API libgit2, но не понимаю, как можно эмулировать поведение git commit --allow-empty. Есть ли в libgit2 встроенный способ создания пустых коммитов? Если нет, то как git создает пустой коммит под капотом и как мне добиться такого же поведения с помощью libgit2?


person Will Da Silva    schedule 05.09.2018    source источник


Ответы (1)


Вызовите git_commit_create с тем же деревом, что и родительский коммит. То есть:

// Get parent somehow.
git_commit *parent = ...;

// Use the same tree as the parent.
git_tree *tree;
git_commit_tree(&tree, parent);

// Create the commit.
git_commit_create(..., tree, 1, parent);
person Jason Haslam    schedule 05.09.2018