该Git
库添加2>&1
到所有命令。所以你的克隆命令最终会像这样执行:
git clone ... 2>&1
最终抑制了所有输出。您需要做的就是覆盖一个调用run_command
in的方法Git::Lib
,然后删除它2>&1
。你可以试试这个irb
:
class Git::Lib
class << self
attr_accessor :verbose
end
def run_command(git_cmd, &block)
git_cmd = git_cmd.gsub("2>&1", "").chomp if self.class.verbose
if block_given?
IO.popen(git_cmd, &block)
else
`#{git_cmd}`.chomp
end
end
end
我定义了一个额外的verbose
属性。因此,每当您需要实际的 git 输出时,只需设置Git::Lib.verbose = true
并运行Git.clone
或任何其他命令,实际输出就会被打印出来。
这将做的是,一旦你设置Git::Lib.verbose = true
然后调用Git.clone
,它将显示 git 进度条,如下所示:
Cloning into 'rapidftr-addon-cpims'...
remote: Counting objects: 207, done.
remote: Compressing objects: 100% (108/108), done.
remote: Total 207 (delta 95), reused 201 (delta 90)
Receiving objects: 50% (105/207), 83.10 KiB | 112 KiB/s...
# ^^ The above line is git's progress bar, it will keep updating
它可能不会以您期望的特定格式显示进度条,但它仍会在下载发生时显示动态更新。
编辑:添加示例输出