如何从ASP.NET页面中弹出并执行git命令?

时间:2009-10-11 23:05:07

标签: asp.net git msysgit

我希望我的ASP.NET页面能够弹出并执行git命令。我将命令放在一个有效的bat文件中:

REM cd to the git repo folder
cd c:\temp\mygitrepo
"c:\Program Files\Git\Bin\git.exe" show c090dc4b8b1b3512c1b5363c371e21d810d02f54 -- myfile.txt

如果我从cmd提示符运行我的.bat文件,没问题。 如果我使用System.Diagnostics.Process.Start运行它,我会收到此错误:
请求RUNTIME_PREFIX,但前缀计算失败。使用静态回退

错误来自此git文件:http://github.com/git/git/blob/master/exec_cmd.c

我使用完全相同的技术来运行svn.exe命令,没问题。

编辑1:从thread here我了解到msysgit在与当前用户关联的位置安装了一些文件,而不是所有用户。 IIS Web服务器正在另一个用户帐户下运行。我尝试将一些引起我注意的git文件(例如.gitconfig)复制到其他用户(在Documents and Settings中)。没运气。所以,我已经把注意力转移到让IIS在启动git命令时冒充我。

1 个答案:

答案 0 :(得分:3)

这实际上是一个错误,还是只是通知你后退?根据链接的代码,看起来命令应该仍然成功执行,只使用静态PREFIX而不是RUNTIME_PREFIX。

如果命令确实失败,您可能希望确保从.NET启动进程时可以使用任何必需的环境变量。您可能还需要模拟不同的Windows标识以使用适当的权限运行命令(我假设ASP.NET标识尽可能受到限制。)ProcessStartInfo对象提供了一些配置过程的方法,包括窗口身份,流程动词和环境变量。在运行之前,请确保提供批处理文件所需的正确上下文。