#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
, а затем каким-то образом разворачивается.