我有一个控制台应用程序,它使用来自某个git存储库的内容。它执行以下操作:
问题是第二项。应根据给定的Git标记组织和处理内容。目前,C#控制台应用程序可以克隆存储库,但现在我需要它来逐个检查存储库中的所有标记。在检查每个标签后,控制台应用程序应处理文件,然后转到下一个标签。
我的C#控制台应用程序如何检查标签?我想只使用像git checkout tags/<tagname>
答案 0 :(得分:1)
要做到这一点实际上相当简单。我创建了一个通用的Git命令方法,使用一个新进程,然后从StandardOutput读取。然后我将所有StandardOutput作为一个逗号分隔的字符串返回,以后可以迭代。
public string RunGitCommand(string command, string args, string workingDirectory)
{
string git = "git";
var results = "";
var proc = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = git,
Arguments = $"{command} {args}",
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true,
WorkingDirectory = workingDirectory,
}
};
proc.Start();
while (!proc.StandardOutput.EndOfStream)
{
results += $"{proc.StandardOutput.ReadLine()},";
}
proc.WaitForExit();
return results;
}
这让我可以调用像这样的标签
var tags = RunGitCommand("tag", "", $"{location}"); // get all tags
最后,我可以迭代所有标签,并使用我上面编写的RunGitCommand
方法检查它们。对于每个迭代标记,我可以执行类似的操作,其中tag
是我的标记列表中的单个元素。
git.RunGitCommand("checkout", $"tags/{tag}", $"{location}");