2016-05-08 8 views
3

Я пытаюсь улучшить свой инструмент CI, и для этого я пытаюсь захватить вывод команды git clone, и это сводит меня с ума.Как подключить git clone

Для того, чтобы упростить сценарий, я свести задачу к этой простой команды:

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

С 2>&1 Я перенаправляя поток ошибок (использование мерзавцем для вывода прогресса) на стандартный вывод, то я Я пытаюсь это сделать до xargs echo -. В моей реальной жизненной ситуации сценарий xargs echo будет заменен чем-то другим.

Я использую --progress, чтобы заставить git быть подробным, даже если он не прикреплен к реальной консоли.

Мой ожидаемый результат будет:

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

Мой вывод не является, а не абсолютно ничего. Я тестирую это на OSX 10.11.

Кто-нибудь знает, что не так с этой командой?

Спасибо очень много заранее.

+0

У вас ничего не получить, или вы просто не получите его в режиме реального времени, это просто все пришли в конце? – Mort

ответ

1

я решил его с помощью

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

Ваша команда работает для меня. Он выводит что-то вроде «- Cloning into repo ... remote ...». Я предполагаю, что ваша система не сможет захватить вывод из-за буферизации вывода.

Попробуйте включить промывку после каждой записи (установите GIT_FLUSH переменная среды на 1). Кроме того, отключить буферизацию для git clone команды:

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

Вы можете использовать это:

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

Хитрость заключается в том, чтобы добавить 2>&1 как последние аргументы команды.
Он распечатает всю команду, поскольку они были распечатаны на терминал, но теперь они будут записаны в нужный файл.

enter image description here