Эквивалент git merge origin/master в libgit2

Я использую библиотеку libgit2 C версии 0.20.0. Я успешно реализовал git_remote_fetch(), который обновляет oid, но после этого я не могу правильно вызвать метод слияния.

Пытался вызвать int git_merge(git_repository *repo, const git_annotated_commit **their_heads, size_t their_heads_len, const git_merge_options *merge_opts, const git_checkout_options *checkout_opts); Но второй параметр git_annotated_commit должен быть постоянным. Я получаю git_annotated_commit ** из метода git_annotated_commit_lookup(). кто-нибудь может сказать мне, как я могу преобразовать git_annotated_commit **out как const? Есть ли другой способ получить git_annotated_commit ** как константу?

Используя консоль Git bash, я выполняю команду git merge origin/master, которая успешно обновляет содержимое репозитория. Может ли кто-нибудь сказать мне, какую команду мне нужно использовать в libgit2, чтобы сделать то же самое?


person Monty    schedule 26.11.2015    source источник


Ответы (1)


Чтобы преобразовать git_annotated_commit **out в const git_annotated_commit **their_heads, вы должны использовать: const_cast, например:

const git_annotated_commit **their_heads = const_cast<const git_annotated_commit**>(out);
person dan    schedule 26.11.2015
comment
не могли бы вы предложить мне, с помощью какого метода библиотеки libgit2 я могу выполнить git add . , git commit и git push ? - person Monty; 26.11.2015
comment
@Monty Рад, что это сработало :). Вы сможете найти все предлагаемые методы здесь: libgit2.github.com/docs /guides/101-образцы. - person dan; 26.11.2015