我正在尝试为另一个安装了julia而不是git的人调试问题 . 我想知道对julia包进行了哪些更改,所以基本上是命令 git diff
.
我想知道我是否可以使用LibGit2?这些命令让我非常接近:
repo = LibGit2.GitRepo(Pkg.dir("NCDatasets"))
tree = LibGit2.GitTree(repo,"HEAD^{tree}");
diff = LibGit2.diff_tree(repo,tree,"")
他们回来了:
GitDiff:
Number of deltas: 1
GitDiffStats:
Files changed: 1
Insertions: 1
Deletions: 1
假设我想知道包NCDatasets的变化 .
所以我知道一个文件被更改了 . 我怎么知道,这个文件是哪一个以及如何更改?
不幸的是,根据我从这里理解的内容,我没有得到任何进一步的信息:
https://github.com/JuliaLang/julia/blob/master/stdlib/LibGit2/src/diff.jl
https://github.com/JuliaLang/julia/blob/master/stdlib/LibGit2/test/libgit2.jl
1 回答
您可以使用:
这将打印
diff
的每个条目 . 不幸的是DiffFile
的标准print
不打印文件名,因此我在标准打印下方添加了打印 .但请注意,此
diff
不包含未跟踪的文件 . 捕获它们的最简单方法是使用LibGit2.status
函数并使用walkdir
遍历存储库中的所有文件 . 此方法也有其缺点,因为它不会检测diff
将包含的已删除文件 . 应该可以通过组合这两种方法来编写捕获所有情况的函数 .