2014-05-09 7 views
5

Ich verwende git clone in einem Bash-Skript, das jede Art von Git-Speicherort (https, git, ssh, Dateisystem ...) und wird es klonen. Dieses Skript muss jedoch ohne Interaktion mit einem Benutzer funktionieren. Genauer gesagt möchte ich, dass dieses Skript nicht für Anmeldeinformationen pausiert: Wenn der Speicherort Anmeldeinformationen erfordert und git sie nicht selbst finden kann, möchte ich, dass git fehlschlägt.Wie erzwinge ich git NICHT zur Eingabe von Anmeldeinformationen

Mein Skript macht die Annahme, dass es nicht seine Sorgen ist, wenn Sie keine ordnungsgemäße Möglichkeit eingerichtet haben, auf diese Orte ohne Passwort zuzugreifen. Die Lösung sollte jedoch eine Möglichkeit bieten zu wissen, was der Fehler war (z. B. einen Fehler ausgeben mit "Authentifizierung fehlgeschlagen").

Ich brauche dieses Verhalten einfach, weil es ein Skript ist, es nicht interaktiv ausgeführt werden soll (Cron-Job, VM-Erstellung ... etc ...). Ich muss es scheitern lassen und nicht mein Skript einfrieren, das auf Informationen wartet, die ich nicht füttern kann (und nicht will).

Also, in meinem aktuellen Anliegen, ich brauche, dass git clone schlägt fehl, anstatt nach Anmeldeinformationen zu fragen.

Ich habe keine Option in git clone gefunden, um zu zwingen, nicht um Anmeldeinformationen zu bitten und vorzugsweise bei einem Authentifizierungsfehler fehlzuschlagen.

+0

Sie SSH für den Zugriff verwenden Remote-Repo? Wenn dies der Fall ist, sollten Sie Ihren Schlüssel möglicherweise auf den Server exportieren, um zu vermeiden, nach Anmeldeinformationen zu fragen. –

+0

@GMGray Ich weiß über alle Möglichkeiten, Ihr System oder git einzurichten, um Zugang zu einem Standort zu erhalten, ohne nach Anmeldeinformationen zu fragen. Dies ist das Problem des Benutzers. Die Aufgabe meines Skripts besteht darin, Repositories zu klonen, denen ich verschiedene Orte gegeben habe. Ich möchte nicht, dass es nicht weiter nach Informationen fragt, da es kein interaktives Skript sein soll. Danke, für Ihre Bemerkung, ich werde meine Frage bearbeiten, um in diesen Angelegenheiten klarer zu sein. – vaab

+0

Wie verbinden Sie? SSH oder HTTP? – Nilpo

Antwort

8

UPDATE: in git version>2.3:

GIT_TERMINAL_PROMPT=0 

Für Vorversion:

Hier ist mein Trick Fehler zu zwingen:

GIT_ASKPASS=/bin/echo git clone ... 
+0

Dies half mir, ein Problem zu diagnostizieren, wenn ich git-Befehle in einer vsts-Build-Aufgabe verwendete, da die Ausgabe der Eingabeaufforderung selbst bei Verwendung von --progress nicht angezeigt wurde. Vielen Dank! – GeekyDeaks

+1

Man kann auch 'GIT_SSH_COMMAND =" ssh-oBatchMode = yes "' benötigen, um Aufforderungen bei der Interaktion über eine SSH-Pipe zu verhindern. – jdknight

Verwandte Themen