如何管道 git 克隆
How to pipe git clone
我正在尝试改进我的 CI 工具,为此我正在尝试捕获 git 克隆命令的输出,这让我抓狂。
为了简化场景,我将问题简化为这个简单的命令:
git clone --progress https://github.com/$REPO.git $FOLDER 2>&1 | xargs echo -
使用 2>&1
我将 stderr(git 用于输出进度)重定向到标准输出,然后我试图将其通过管道传输到 xargs echo -
。在我的现实生活场景中 xargs echo
将被其他东西取代。
我正在使用 --progress 以强制 git 变得冗长,即使它没有连接到真正的控制台。
我的预期输出是:
- Cloning into 'a3'...
- remote: Counting objects: 54130, done.
- remote: Compressing objects: 100% (520/520), done.
我的输出完全没有。
我正在 OSX 10.11.
上测试这个
有人知道那个命令有什么问题吗?
提前非常感谢。
你的命令对我有用。它输出类似“- 克隆到 repo...远程...”之类的内容。我猜你的系统由于输出缓冲而无法捕获输出。
尝试在每条记录后打开刷新(将 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)
你可以使用这个:
git clone --progress url > clone.txt 2>&1
诀窍是添加 2>&1
作为命令的最后一个参数。
它将打印出所有命令,因为它们将被打印到终端,但现在它们被写入了所需的文件。
我用
解决了
git clone --progress --branch $TAG_VERSION https://github.com/$REPO ./ 2>&1 | tr '\u000D' '\n'"
我正在尝试改进我的 CI 工具,为此我正在尝试捕获 git 克隆命令的输出,这让我抓狂。
为了简化场景,我将问题简化为这个简单的命令:
git clone --progress https://github.com/$REPO.git $FOLDER 2>&1 | xargs echo -
使用 2>&1
我将 stderr(git 用于输出进度)重定向到标准输出,然后我试图将其通过管道传输到 xargs echo -
。在我的现实生活场景中 xargs echo
将被其他东西取代。
我正在使用 --progress 以强制 git 变得冗长,即使它没有连接到真正的控制台。
我的预期输出是:
- Cloning into 'a3'...
- remote: Counting objects: 54130, done.
- remote: Compressing objects: 100% (520/520), done.
我的输出完全没有。 我正在 OSX 10.11.
上测试这个有人知道那个命令有什么问题吗?
提前非常感谢。
你的命令对我有用。它输出类似“- 克隆到 repo...远程...”之类的内容。我猜你的系统由于输出缓冲而无法捕获输出。
尝试在每条记录后打开刷新(将 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)
你可以使用这个:
git clone --progress url > clone.txt 2>&1
诀窍是添加 2>&1
作为命令的最后一个参数。
它将打印出所有命令,因为它们将被打印到终端,但现在它们被写入了所需的文件。
我用
解决了git clone --progress --branch $TAG_VERSION https://github.com/$REPO ./ 2>&1 | tr '\u000D' '\n'"