我正在尝试从运行于IIS 7/.Net 4.5的C#中运行bash命令。在网上搜索了很多答案,但大部分都假定你已经安装/准备好了某些内容。我已经安装了"Git 1.9.4.msysgit.2"和Git Bash以及Git Gui。我需要帮助了解还需要安装什么才能运行最简单的bash命令,并且如何运行它。我看过像bash pipes - I am trying to call script from c#这样的文章,但那使用了"cygwin"。如果没有它,我能否做到同样的事情,如果可以,我该怎么做?
我基于我之前在GitHub - setup auto deployment with remote server上提出的问题得出了这个问题。根据那里的答案,我正在尝试运行一个简单的命令,可以通过硬编码命令或将其放入脚本并运行来完成,例如:
我知道Jenkins和其他软件,但我想自己执行这些命令而不是安装另一个软件。
如果需要进一步的信息,请随时提问。
更新1
因此,基于下面的几个答案,我想出了以下解决方案。
使用上面的代码,我得到了
更新2
根据@SurgeonofDeath的评论,我遵循了这篇文章http://blog.countableset.ch/2012/06/07/adding-git-to-windows-7-path/并将Git的路径添加到我的环境变量中。然而,我仍然遇到相同的问题。有什么建议吗?
谢谢。
目标
如果我上面提出的问题不太清楚或似乎是在问不同的问题,这是我的最终目标。我正在尝试编写自己的服务器端git挂钩。当开发人员将他们的提交推送到我们的GitHub存储库时,我希望GitHub调用我们的回调URL。我希望我的回调URL运行一个git pull
命令,以使用刚刚推送的内容更新我们的staging
服务器。我基于我之前在GitHub - setup auto deployment with remote server上提出的问题得出了这个问题。根据那里的答案,我正在尝试运行一个简单的命令,可以通过硬编码命令或将其放入脚本并运行来完成,例如:
cd $REPO_DIR && git pull origin $branch_name
。我知道Jenkins和其他软件,但我想自己执行这些命令而不是安装另一个软件。
如果需要进一步的信息,请随时提问。
更新1
因此,基于下面的几个答案,我想出了以下解决方案。
using System.Diagnostics;
Process process = new Process();
ProcessStartInfo processStartInfo = new ProcessStartInfo();
processStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
processStartInfo.FileName = @"C:\Program Files (x86)\Git\bin\bash.exe";
processStartInfo.WorkingDirectory = @"C:\myrepo\mysite";
processStartInfo.Arguments = "git status";
processStartInfo.RedirectStandardOutput = true;
processStartInfo.RedirectStandardError = true;
processStartInfo.UseShellExecute = false;
process.StartInfo = processStartInfo;
process.Start();
String error = process.StandardError.ReadToEnd();
String output = process.StandardOutput.ReadToEnd();
ViewBag.Error = error;
ViewBag.Ouput = output;
使用上面的代码,我得到了
"C:/Program Files (x86)/Git/bin/bash.exe": git: No such file or directory
。我知道exe文件在那里,我做错了什么?更新2
根据@SurgeonofDeath的评论,我遵循了这篇文章http://blog.countableset.ch/2012/06/07/adding-git-to-windows-7-path/并将Git的路径添加到我的环境变量中。然而,我仍然遇到相同的问题。有什么建议吗?
谢谢。