2016-05-08 10 views
3

Ich versuche, meine CI-Tooling zu verbessern und dies zu tun, ich versuche, die Ausgabe des Git-Klon-Befehl zu erfassen, und dies macht mich verrückt.Wie Pipe Git Klon

Um das Szenario zu vereinfachen, reduziere ich das Problem zu diesem einfachen Befehl:

git clone --progress https://github.com/$REPO.git $FOLDER 2>&1 | xargs echo - 

Mit 2>&1 ich Umleiten der stderr (Verwendung von git zur Ausgabe des Fortschritts) an die stdout, ich dann Ich versuche, das zu zu leiten. In meinem realen Leben Szenario xargs echo wird durch etwas anderes ersetzt werden.

Ich benutze --progress, um git zu erzwingen, auch wenn es nicht an eine echte Konsole angeschlossen ist.

Meine erwartete Ausgabe wäre:

- Cloning into 'a3'... 
- remote: Counting objects: 54130, done. 
- remote: Compressing objects: 100% (520/520), done. 

Meine Ausgabe ist stattdessen absolut nichts. Ich teste dies auf OSX 10.11.

Weiß jemand, was mit diesem Befehl falsch ist?

Vielen Dank sehr viel im Voraus.

+0

Verwendung Haben Sie nie etwas bekommen, oder nicht erhalten Sie es einfach in Echtzeit, ist es nur alle am Ende kommen? – Mort

Antwort

1

Ich löste es durch

git clone --progress --branch $TAG_VERSION https://github.com/$REPO ./ 2>&1 | tr '\u000D' '\n'" 
0

Ihr Befehl funktioniert für mich. Es gibt so etwas wie "- Klonen in Repo ... Remote ..." aus. Ich nehme an, dass Ihr System die Ausgabe aufgrund der Pufferung der Ausgabe nicht erfassen kann.

Versuchen Sie, die Spülung nach jedem Datensatz einzuschalten (setzen Sie GIT_FLUSH Umgebungsvariable auf 1). Schalten Sie auch Pufferung für git clone Befehl:

repo='your-repo-uri' 

while read -r l; do 
    echo "<<<<<<<<<<" 
    echo "$l" 
    echo ">>>>>>>>>>" 
done < <(GIT_FLUSH=1 stdbuf -i0 -o0 -e0 git clone --progress "$repo" 2>&1) 
0

Sie diese verwenden können:

git clone --progress url > clone.txt 2>&1 

Der Trick ist, die 2>&1 als die letzten Argumente des Befehls hinzuzufügen.
Es wird alle Befehle ausgedruckt, wie sie auf dem Terminal ausgedruckt worden wären, aber jetzt werden sie in die gewünschte Datei geschrieben.

enter image description here