【发布时间】:2011-03-25 12:09:57
【问题描述】:
我如何pull(也可以push)GitHub 上的某个文件夹?
我的意思是我需要 .NET 的 API 才能在 C# 中访问,而不是 git 的 GUI。
【问题讨论】:
-
@code4life - 以及其他对库/工具推荐感兴趣的人 - 结帐Software Recommendations Stack Exchange。
我如何pull(也可以push)GitHub 上的某个文件夹?
我的意思是我需要 .NET 的 API 才能在 C# 中访问,而不是 git 的 GUI。
【问题讨论】:
然而,我所做的是编写一个简单的类库来通过运行子进程来调用 git 命令。
首先,为一些配置创建一个 ProcessStartInfo。
ProcessStartInfo gitInfo = new ProcessStartInfo();
gitInfo.CreateNoWindow = true;
gitInfo.RedirectStandardError = true;
gitInfo.RedirectStandardOutput = true;
gitInfo.FileName = YOUR_GIT_INSTALLED_DIRECTORY + @"\bin\git.exe";
然后创建一个进程来实际运行命令。
Process gitProcess = new Process();
gitInfo.Arguments = YOUR_GIT_COMMAND; // such as "fetch orign"
gitInfo.WorkingDirectory = YOUR_GIT_REPOSITORY_PATH;
gitProcess.StartInfo = gitInfo;
gitProcess.Start();
string stderr_str = gitProcess.StandardError.ReadToEnd(); // pick up STDERR
string stdout_str = gitProcess.StandardOutput.ReadToEnd(); // pick up STDOUT
gitProcess.WaitForExit();
gitProcess.Close();
现在由你来调用任何命令。
【讨论】:
正如 James Manning 在当前接受的答案中的评论中提到的那样,库 libgit2sharp 是一个积极支持的项目,为 Git 提供 .NET API。
【讨论】:
我刚刚发现了这个:http://www.eqqon.com/index.php/GitSharp
GitSharp 是针对 Dot.Net 框架和 Mono 的 Git 的实现。它旨在与原始 Git 完全兼容,并且应该是一个轻量级库,适用于基于 Git 作为其对象数据库或以某种方式读取或操作存储库的酷应用程序......
【讨论】: