Biblioteka Git
dodaje 2>&1
do wszystkich poleceń. Tak więc polecenie twojego klonu kończy się w następujący sposób:
git clone ... 2>&1
Który kończy tłumienie wszystkich wyników. Wszystko, co musisz zrobić, to zastąpić pojedynczą metodę o nazwie run_command
w Git::Lib
i usunąć tę 2>&1
. Można spróbować to w 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
Mam zdefiniowane dodatkowe verbose
atrybut. Tak więc, gdy potrzebujesz rzeczywistych wyjść git, ustaw Git::Lib.verbose = true
i uruchom Git.clone
lub dowolne inne polecenie, a rzeczywiste wydruki zostaną wydrukowane.
Co to będzie zrobić, to po ustawieniu Git::Lib.verbose = true
a następnie zadzwonić Git.clone
, wyświetli się pasek postępu git tak:
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
Nie może pokazać pasek postępu w określonym formacie, który można oczekiwać , ale nadal będzie wyświetlać dynamiczne aktualizacje podczas pobierania.
EDIT: Dodano wyjścia Przykładowe
hmm, dobrze więc zapomnij o tym, czy mogę używać ruby-git gem i używam normalnej 'git clone git: // github.com/ankit8898/rubymotion-inspect.git'. Jak mogę znaleźć pasek postępu klonowania? Moim głównym celem jest złapanie paska postępu za pomocą ruby-git gem lub prostego klonu git. – AnkitG
Spróbuj odczytać i interpretować dane wyjściowe tego polecenia powłoki. Może będziesz miał szczęście. –
cóż, to jest plan awaryjny. :) Ale nadal nie ma innego sposobu na użycie git clone z gem gem. Ponieważ jestem zainteresowany widzeniem paska postępu z klonem git. – AnkitG