Как получить поведение » git diff master :` в Rust git2

#rust #libgit2

Вопрос:

Я хочу сравнить свой локальный репозиторий только с подкаталогом моего удаленного. Хотя родная команда git, я могу добиться этого с помощью: git diff master <a remote commit>:>directory>

Как я могу добиться этого с помощью ящика Rust git2?

Комментарии:

1. В библиотеке C это должно быть очевидно из названия git_diff_tree_to_tree . Делает ли оболочка ржавчины вид, что можно различать только фиксации или что-то в этом роде?

2. Или вас смущает эта revparse роль?

3. Я был в замешательстве, как достичь дерева для <a remote commit>:>directory> . Но я думаю, что смогу достичь этого, пройдя по дереву, указанному в данном коммите, спасибо

Ответ №1:

Как упоминалось @o11c, это доступно в библиотеке C с помощью git_diff_tree_to_tree функции, которая соответствует Repository::diff_tree_to_tree в Rust.

master будет передан в old_tree параметре <a remote commit> in new_tree и <directory> может быть указан с opts помощью параметра, построенного с использованием DiffOptions::pathspec .

Комментарии:

1. Я почти уверен pathspec , что это для git diff tree1 tree2 some/dirs , а это не то, чего хочет ОП. Вторым аргументом должно быть дерево , которое, я думаю, просматривается с помощью repo.revparse_single , а затем каким-то образом разворачивается.