Als ein lustiges Projekt versuche ich mehrere Befehle über einen git-cmd.exe-Prozess über C# auszuführen.Open git bash Prozess ohne Fenster
Ich habe diesen Code mehrere Befehle auszuführen:
var info = new ProcessStartInfo(@"C:\Program Files\Git\git-cmd.exe");
info.RedirectStandardInput = true;
info.UseShellExecute = false;
var gitProcess = new Process { StartInfo = info };
gitProcess.Start();
using (StreamWriter sw = gitProcess.StandardInput)
{
// commands here
}
gitProcess.WaitForExit();
Dies läuft gut, aber wenn ich versuche, den folgenden Befehl ausführen, erhalte ich mehrere Nachrichten.
Befehl (https://stackoverflow.com/a/33656490/1671161):
curl -X POST -v -u username:password https://api.bitbucket.org/2.0/repositories/TeamName/reponame -H "Content-Type: application/json" -d '{"scm": "git", "is_private": true, "fork-policy": "no_public_forks", "has_issues": true}'
Nachrichten:
Note: Unnecessary use of -X or --request, POST is already inferred.
* timeout on name lookup is not supported
* Trying 2401:1d80:1010::153...
* Connected to api.bitbucket.org (2401:1d80:1010::153) port 443 (#0)
#more messages, seems OK to me so far, but then this:
Connection state changed (MAX_CONCURRENT_STREAMS updated)!
* We are completely uploaded and fine
* HTTP 1.0, assume close after body
< HTTP/2 400
< server: nginx/1.6.2
< vary: Authorization, Cookie
< content-type: text/plain
< strict-transport-security: max-age=31536000
< date: Wed, 10 Aug 2016 17:34:57 GMT
< x-served-by: app-112
< x-static-version: 89c5b48218a9
< etag: "825644f747baab2c00e420dbbc39e4b3"
< x-render-time: 0.0194010734558
< x-accepted-oauth-scopes: repository:admin
< x-version: 89c5b48218a9
< x-request-count: 459
< x-frame-options: SAMEORIGIN
< content-length: 11
<
Bad Request* Closing connection 0
* TLSv1.2 (OUT), TLS alert, Client hello (1):
Note: Unnecessary use of -X or --request, POST is already inferred.
* Rebuilt URL to: git,/
* timeout on name lookup is not supported
* getaddrinfo(3) failed for git,:80
* Couldn't resolve host 'git,'
* Closing connection 1
BitBuckets API-Dokumentation nachschlagen, die 400 Rückkehrzustand bedeutet „Wenn das Eingabedokument ungültig war, oder wenn der Anrufer das fehlt Berechtigung zum Erstellen von Repositories unter dem Zielkonto. " Leider konnte ich das richtige Format für den Befehl in git-cmd.exe nicht finden.
Der Befehl wird in Git Bash in Ordnung, so dass ich versuchte, einen Git Bash-Prozess auszuführen:
var gitbashinfo = new ProcessStartInfo(@"C:\Program Files\Git\git-bash.exe");
gitbashinfo.RedirectStandardInput = true;
gitbashinfo.UseShellExecute = false;
var gitbashProcess = new Process { StartInfo = gitbashinfo };
gitbashProcess.Start();
using (StreamWriter sw = gitbashProcess.StandardInput)
{
// The command
}
gitbashProcess.WaitForExit();
Aber dies ein Git Bash-Fenster öffnet, und nicht meinen Befehl ausführen. Ich habe ehrlich erwartet, dass das Programm genau dasselbe macht wie ich mit dem git-cmd.exe-Prozess. Öffnen Sie also kein neues Fenster, sondern führen Sie alle Befehle im bereits geöffneten Fenster aus und zeigen Sie auch die Ausgabe an.
Meine Frage ist also: Wie kann ich den CURL-Befehl ausführen, um in meinem git-cmd.exe-Prozess erfolgreich ausgeführt werden? ODER, wie sollte ich den git-bash.exe-Prozess in meinem Programmfenster ausführen?
Bereits versucht, dass vorher, aber es immer noch ein neues Fenster erstellen .. – FJPoort