使用 libgit2sharp 获取特定目录的 master 和 develop 之间的差异
Getting diff between master and develop for a specific directory with libgit2sharp
我需要获取特定目录的 master 和 develop 之间的完整差异,以便我可以解析它并创建一个易于阅读的变更日志。
我想用 libgit2sharp 复制 "git diff --unified=0 master directory/ >file.diff"。我设法获得了所有 modified/added/deleted 文件的列表,但我不知道如何获得每个文件的 diff 内容。
using (var repo = new Repository("C:\dev\myProject"))
{
var changes = repo.Diff.Compare<TreeChanges>(repo.Branches["master"].TrackedBranch.Tip.Tree,
DiffTargets.WorkingDirectory);
foreach (var changed in changes.Modified)
{
if (changed.Path.Contains("directory"))
{
Console.WriteLine("modified:" + changed.Path);
}
}
}
我想要类似于实际 git 命令的内容,以便我可以对其进行解析。另一种解决方案是使用 "Process.Start",但 libgit2sharp 可能是一种更简洁的方法。我没有用于 PowerShell 的 .Net Core 2.0。
补丁默认统一格式
git diff master..develop <directory> > output.diff
我使用 Process.Start 解决了它。我仍然对 libgit2sharp 解决方案感兴趣。提示:1252 编码在标准 .Net Core 中不起作用。
const string command = "git";
const string directory = "C:\dev\myProject";
const string arguments = "diff --unified=0 master directory/";
var startInfo = new ProcessStartInfo
{
WorkingDirectory = directory,
FileName = command,
Arguments = arguments,
StandardOutputEncoding = Encoding.GetEncoding(1252),
UseShellExecute = false,
RedirectStandardOutput = true
};
var cmd = Process.Start(startInfo);
var sr = cmd?.StandardOutput;
var output = sr?.ReadToEnd();
cmd?.WaitForExit();
我需要获取特定目录的 master 和 develop 之间的完整差异,以便我可以解析它并创建一个易于阅读的变更日志。
我想用 libgit2sharp 复制 "git diff --unified=0 master directory/ >file.diff"。我设法获得了所有 modified/added/deleted 文件的列表,但我不知道如何获得每个文件的 diff 内容。
using (var repo = new Repository("C:\dev\myProject"))
{
var changes = repo.Diff.Compare<TreeChanges>(repo.Branches["master"].TrackedBranch.Tip.Tree,
DiffTargets.WorkingDirectory);
foreach (var changed in changes.Modified)
{
if (changed.Path.Contains("directory"))
{
Console.WriteLine("modified:" + changed.Path);
}
}
}
我想要类似于实际 git 命令的内容,以便我可以对其进行解析。另一种解决方案是使用 "Process.Start",但 libgit2sharp 可能是一种更简洁的方法。我没有用于 PowerShell 的 .Net Core 2.0。
补丁默认统一格式
git diff master..develop <directory> > output.diff
我使用 Process.Start 解决了它。我仍然对 libgit2sharp 解决方案感兴趣。提示:1252 编码在标准 .Net Core 中不起作用。
const string command = "git";
const string directory = "C:\dev\myProject";
const string arguments = "diff --unified=0 master directory/";
var startInfo = new ProcessStartInfo
{
WorkingDirectory = directory,
FileName = command,
Arguments = arguments,
StandardOutputEncoding = Encoding.GetEncoding(1252),
UseShellExecute = false,
RedirectStandardOutput = true
};
var cmd = Process.Start(startInfo);
var sr = cmd?.StandardOutput;
var output = sr?.ReadToEnd();
cmd?.WaitForExit();