Git
庫將2>&1
添加到所有命令。所以你的克隆命令最終被執行如下:
git clone ... 2>&1
哪個結束抑制所有輸出。您只需要在Git::Lib
中覆蓋一個名爲run_command
的方法,然後刪除那個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
它可能不會顯示在您所期望的特定格式的進度條,但它會在下載過程中顯示動態更新。
編輯:新增樣本輸出
嗯,好了,所以忘了,如果我使用Ruby-git的寶石和我正常使用'混帳混帳克隆:// github.com/ankit8898/rubymotion-inspect.git'。我怎樣才能找到克隆的進度條。我的主要目標是通過使用ruby-git gem或簡單的git clone來捕獲進度條。 – AnkitG 2013-05-19 18:27:58
嘗試閱讀並解釋此shell命令的輸出。也許你會很幸運。 – 2013-05-19 18:29:54
好吧,那是一個備份計劃。 :)但仍然沒有任何其他方式來使用git clone和progressbar gem。因爲我有興趣看到使用git clone的實際進度條。 – AnkitG 2013-05-20 06:55:06