如何在libgit2中打印差异文件
how to print diff files in libgit2?
我尝试了此
string path = "path/to/my/repo";
git_libgit2_init();
const char * REPO_PATH = path.c_str();
git_repository * repo = nullptr;
git_repository_open(&repo, REPO_PATH);
git_diff_options diffopts = GIT_DIFF_OPTIONS_INIT;
git_diff *diff;
diffopts.flags = GIT_CHECKOUT_NOTIFY_CONFLICT;
git_diff_index_to_workdir(&diff, repo, NULL, &diffopts);
git_diff_format_t format = GIT_DIFF_FORMAT_NAME_ONLY;
if (0!=git_diff_print(diff, format, NULL,NULL)) cerr << "git_diff_print() failed" << endl;
git_diff_free(diff);
git_repository_free(repo);
git_libgit2_shutdown();
但我不知道要发送什么作为第三和第四参数来函数git_diff_print((,一些想法?
在libgit2 api中,此函数的声明
git_diff_print(git_diff *diff, git_diff_format_t format, git_diff_line_cb print_cb, void *payload);
,但我不知道最后两个参数以及如何将它们发送到此功能
尝试此示例时:
https://libgit2.github.com/libgit2/ex/head/head/diff.html#git_diff_diff_print-9
,它对我不起作用
最后,我以另一种方式获得了信息,有我的解决方案:
git_libgit2_init();
const char * REPO_PATH = path.c_str();
git_repository * repo = nullptr;
git_repository_open(&repo, REPO_PATH);
git_diff_options diffopts = GIT_DIFF_OPTIONS_INIT;
git_diff *diff;
diffopts.flags = GIT_CHECKOUT_NOTIFY_CONFLICT;
git_diff_index_to_workdir(&diff, repo, NULL, &diffopts);
size_t num_deltas = git_diff_num_deltas(diff);
if (num_deltas != 0){
const git_diff_delta *delta = git_diff_get_delta(diff, 0);
int i = 0;
cerr << "Your local changes to the following files would be overwritten by checkout : " << endl;
while (i<num_deltas) {
delta = git_diff_get_delta(diff, i);
git_diff_file file = delta->new_file;
cerr << "t" << file.path << endl;
i++;
}
cerr << "Please commit your changes before you switch branches. " << endl;
}
else cout << "All files OK, can checkout now" << endl;
git_diff_free(diff);
git_repository_free(repo);
git_libgit2_shutdown();
相关文章:
- 使用 getline 从输入文件打印时如何忽略空白行
- C++击球平均值程序使用输入/输出文件打印名称,平均值,最高/最低平均值时遇到麻烦
- 了解文件输入和输出,我可以写入文件,但无法从文件打印
- 如何将文件打印到其他文件夹
- 如何修复向量不从文件打印值
- 从文本文件打印后如何摆脱新线条,并在打印时摆脱结局空间
- 使用数组从文件打印整数
- 从文本文件打印 sfml 中的 2D 数组
- 从输入文件打印图形
- 从C 中的.txt文件打印出所选的数据
- 超载Ostream运算符从文件打印矩阵
- 为什么这不从TXT文件打印值
- 从文本文件打印字符串和整数 (C++)
- 为什么它只打印文本文件的一个单词,而不是将整个文本文件打印到html文件中
- C++从文本文件打印回文
- 无法从文件打印文本
- 尝试从输入文件打印,但打印最后一个输入两次
- 在 c++ 中从文件打印 2D 数组
- 从 postgresql 上运行的 c++ 文件打印
- 获取字符串从文本文件打印随机行时出现问题