Thư viện Git
thêm 2>&1
vào tất cả các lệnh. Vì vậy, lệnh clone của bạn sẽ được thực thi như sau:
git clone ... 2>&1
Điều này sẽ triệt tiêu tất cả đầu ra. Tất cả những gì bạn cần làm là ghi đè một phương thức được gọi là run_command
trong Git::Lib
và xóa số 2>&1
đó. Bạn có thể thử điều này trong 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
tôi đã xác định thêm một verbose
thuộc tính. Vì vậy, bất cứ khi nào bạn cần đầu ra git thực tế, chỉ cần thiết lập Git::Lib.verbose = true
và chạy Git.clone
hoặc bất kỳ lệnh nào khác và kết quả đầu ra thực tế sẽ được in.
Điều này sẽ làm là, một khi bạn thiết lập Git::Lib.verbose = true
và sau đó gọi Git.clone
, nó sẽ hiển thị thanh tiến trình git như thế này:
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
Nó có thể không hiển thị thanh tiến trình trong các định dạng cụ thể mà bạn mong đợi , nhưng nó vẫn sẽ hiển thị các cập nhật động khi quá trình tải xuống diễn ra.
Edit: thêm kết quả đầu ra mẫu
hmm, được không nên quên về nếu tôi sử dụng ruby-git đá quý và tôi sử dụng bình thường 'git clone git: // github.com/ankit8898/rubymotion-inspect.git'. Làm thế nào tôi vẫn có thể tìm thấy thanh tiến trình của bản sao. Mục đích chính của tôi là bắt thanh tiến trình bằng cách sử dụng đá quý ruby-git hoặc bản sao git đơn giản. – AnkitG
Thử đọc và diễn giải đầu ra của lệnh shell này. Có thể bạn sẽ may mắn. –
tốt, đó là một kế hoạch dự phòng. :) Nhưng vẫn không có cách nào khác để sử dụng git clone với gem thanh tiến trình. Vì tôi quan tâm đến việc nhìn thấy thanh tiến trình thực sự với bản sao git. – AnkitG