在文本模式下为svn checkout添加进度条

3
我正在编写一段 bash 脚本,需要从多个远程子版本库中获取源代码。我使用 svn checkout -q 来避免显示杂乱的文件列表,但现在我正在寻找一种清晰的方式来在每次 svn checkout 期间向用户显示进度信息。这与wgetcurl的进度指示器类似。我的用户使用OSX和Linux。虽然 pv 在两个平台上都可用,但目前为止,我还没有找到如何将其与 svn checkout 结合使用的方法。我还应该说明,我不想使用GUI窗口工具,而是只想使用文本工具。

非常欢迎任何建议!谢谢!


您是要按字节计数还是按文件计数来报告进度? - alroc
@alroc 我在考虑整个下载的百分比,但我找不到使用 svn 确定总检出大小的简单方法。总字节数将是下一个最好的选择。 - Dominique
获取SVN的字节计数并不容易;我认为服务器在过程中不会将该数据提供给客户端。文件计数是你最好的选择。 - alroc
2个回答

0

我找到的最接近的东西是:http://www.danielkraaij.nl/2014/03/30/subversion-progressbar-in-bash/

n=$(svn info -R svn://svn/project/trunk | grep "URL: " | uniq | wc -l)

n=$(svn info -R svn://svn/project/trunk | grep "URL: " | uniq | wc -l)
i=1
while read line filename
    do
    counter=$(( 100*(++i)/n))
    echo -e "($counter %)\n"
    echo -e "filename: $filename \n"
done < <(svn co svn://svn/project/trunk /var/www/project)

dialog --backtitle "Subversion Installer" --title "SVN Checkout" --gauge "Getting total file count" 7 120 < <(
    n=$(svn info -R svn://svn/project/trunk | grep "URL: " | uniq | wc -l)
    i=1
    while read line filename
        do
        counter=$(( 100*(++i)/n))
        echo "XXX"
        echo "$counter"
        echo "filename: $filename"
        echo "XXX"

    done < <(svn co svn://svn/project/trunk /var/www/project)
)

0

尝试:

svn list -v -R URL

你可以解析结果,并按文件计数进行进度。

正是我要建议的。 - alroc
那么如何获取已经提取的文件数量呢?使用“stat”命令吗? - Dominique
svn co URL > file 然后使用循环和 wc -l 命令来处理 file 文件。 - Eduardo G
2
我看不出那有什么帮助。当我执行 'svn co URL' 命令时,所有内容都已经被获取,没有必要显示进度条... - Dominique

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接