0

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:ここのスレッドから、 msysgitがすべてのユーザーではなく、現在のユーザーである私に関連付けられた場所にいくつかのファイルをインストールすることを学びました。IISWebサーバーは別のユーザーアカウントで実行されています。.gitconfigなど、目を引いたgitファイルの一部を他のユーザー([ドキュメントと設定])にコピーしてみました。運がない。そのため、私は、IISがgitコマンドを起動したときに私になりすますようにすることに焦点を移しました。

4

1 に答える 1

3

それは実際にはエラーですか、それともフォールバックを通知するだけですか?リンクされたコードに基づくと、コマンドはRUNTIME_PREFIXではなく静的PREFIXのみを使用して、引き続き正常に実行されるはずです。

コマンドが実際に失敗する場合は、.NETからプロセスを開始するときに、必要な環境変数が使用可能であることを確認することをお勧めします。また、適切なアクセス許可でコマンドを実行するには、別のWindows IDを偽装する必要がある場合があります(ASP.NET IDは可能な限り制限されていると想定しています)。ProcessStartInfoオブジェクトは、Windowsを含むプロセスを構成するいくつかの方法を提供します。 ID、プロセス動詞、および環境変数。バッチファイルを実行する前に、バッチファイルに必要な適切なコンテキストを提供していることを確認してください。

于 2009-10-11T23:20:22.147 に答える