Go: cmd / go: vá ficar extremamente lento sem feedback por padrão

Criado em 17 nov. 2016  ·  3Comentários  ·  Fonte: golang/go

Qual versão do Go você está usando ( go version )?

$ go version
go version go1.7.3 darwin/amd64

O que você fez?

go get parece não ter nenhum feedback útil por padrão.

Reproduzir:
go get github.com/die-net/dhtproxy
Isso então parece congelar por cerca de 10-15 minutos. Não há feedback.

Acabei descobrindo que posso:
go get -u -v github.com/die-net/dhtproxy
Para ver o progresso, e parece que porque youtube/vitess é absolutamente gigantesco, este comando leva uma eternidade.

O que você esperava ver?

Eu esperava ver algo parecido com "Fetching project, fetching deps, installation deps, etc", com algum tipo de barra de progresso.

O que você viu em vez disso?

Nada. Ele fica lá por cerca de 10 minutos. Eu pensei que estava quebrado.

A solução é óbvia - habilite -v por padrão. É um péssimo design de CLI ter um processo rodando por 10 minutos sem saída por padrão, parece que está quebrado.

FrozenDueToAge

Comentários muito úteis

A Regra do Silêncio não diz que os programas devem ser absolutamente silenciosos, a menos que haja um erro ou uma saída seja especificamente solicitada, mas que os programas não devem produzir saídas desnecessariamente. Dado o feedback de que um processo que leva 15 minutos não foi interrompido não é desnecessário, na verdade, é um bom design de CLI.

Para referência, nenhum (0) dos outros gerenciadores de pacotes que testei são silenciosos por padrão.

$ pip install test
Collecting test
  Downloading test-2.3.4.5.tar.gz
Building wheels for collected packages: test
  Running setup.py bdist_wheel for test ... done
  Stored in directory: /Users/rjones/Library/Caches/pip/wheels/0e/83/0d/f0f92214b5cce4bcbce4958ddacebf926e1c54c8445f0ba167
Successfully built test
Installing collected packages: test
Successfully installed test-2.3.4.5
$ npm install test
/tmp/
└─┬ [email protected] 
  └── [email protected] 

( npm tem um sinalizador --silent para este recurso)

$ brew install test
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 2 taps (homebrew/core, homebrew/versions).
==> New Formulae
homebrew/versions/postgresql95
==> Updated Formulae
ruby ✔                                                                          tig                                                                             tile38
==> Deleted Formulae
homebrew/versions/postgresql93

Error: No available formula with the name "test" 
==> Searching for similarly named formulae...
These similarly named formulae were found:
cpptest                   cxxtest                   gjstest                   homebrew/science/swetest  memtester                 slowhttptest              testdisk                  unittest                  vttest
cpputest                  git-test                  homebrew/games/minetest   js-test-driver            phoronix-test-suite       speedtest_cli             testssl                   unittest-cpp
To install one of them, run (for example):
  brew install cpptest
==> Searching taps...
These formulae were found in taps:
homebrew/completions/ctest-completion                       Caskroom/cask/aja-system-test                               Caskroom/cask/nsregextester                                 Caskroom/versions/emacs-pretest
homebrew/emacs/test-simple                                  Caskroom/cask/colortester                                   Caskroom/cask/sqlitestudio
To install one of them, run (for example):
  brew install homebrew/completions/ctest-completion

etc.

Acho que dizer "porque é Unix" é um pouco falso. É _extremamente_ comum que programas Unix com tarefas de longa execução tenham barras de progresso - consulte rsync, wget, git, etc.

Qual é a vantagem de não ter uma barra de progresso aqui? Parece que os benefícios de "não parecer totalmente quebrado" superam em muito os benefícios de "não incomodar uma pequena porcentagem de usuários que odeia feedback e também se recusam a usar --silent ".

Todos 3 comentários

Esse é o jeito do Unix: fique quieto por padrão, a menos que o detalhamento tenha sido solicitado ou haja um erro.

Não acho que isso seja algo que iremos mudar. Ainda mais pessoas seriam contra o que eles considerariam spam (-v) por padrão.

A Regra do Silêncio não diz que os programas devem ser absolutamente silenciosos, a menos que haja um erro ou uma saída seja especificamente solicitada, mas que os programas não devem produzir saídas desnecessariamente. Dado o feedback de que um processo que leva 15 minutos não foi interrompido não é desnecessário, na verdade, é um bom design de CLI.

Para referência, nenhum (0) dos outros gerenciadores de pacotes que testei são silenciosos por padrão.

$ pip install test
Collecting test
  Downloading test-2.3.4.5.tar.gz
Building wheels for collected packages: test
  Running setup.py bdist_wheel for test ... done
  Stored in directory: /Users/rjones/Library/Caches/pip/wheels/0e/83/0d/f0f92214b5cce4bcbce4958ddacebf926e1c54c8445f0ba167
Successfully built test
Installing collected packages: test
Successfully installed test-2.3.4.5
$ npm install test
/tmp/
└─┬ [email protected] 
  └── [email protected] 

( npm tem um sinalizador --silent para este recurso)

$ brew install test
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 2 taps (homebrew/core, homebrew/versions).
==> New Formulae
homebrew/versions/postgresql95
==> Updated Formulae
ruby ✔                                                                          tig                                                                             tile38
==> Deleted Formulae
homebrew/versions/postgresql93

Error: No available formula with the name "test" 
==> Searching for similarly named formulae...
These similarly named formulae were found:
cpptest                   cxxtest                   gjstest                   homebrew/science/swetest  memtester                 slowhttptest              testdisk                  unittest                  vttest
cpputest                  git-test                  homebrew/games/minetest   js-test-driver            phoronix-test-suite       speedtest_cli             testssl                   unittest-cpp
To install one of them, run (for example):
  brew install cpptest
==> Searching taps...
These formulae were found in taps:
homebrew/completions/ctest-completion                       Caskroom/cask/aja-system-test                               Caskroom/cask/nsregextester                                 Caskroom/versions/emacs-pretest
homebrew/emacs/test-simple                                  Caskroom/cask/colortester                                   Caskroom/cask/sqlitestudio
To install one of them, run (for example):
  brew install homebrew/completions/ctest-completion

etc.

Acho que dizer "porque é Unix" é um pouco falso. É _extremamente_ comum que programas Unix com tarefas de longa execução tenham barras de progresso - consulte rsync, wget, git, etc.

Qual é a vantagem de não ter uma barra de progresso aqui? Parece que os benefícios de "não parecer totalmente quebrado" superam em muito os benefícios de "não incomodar uma pequena porcentagem de usuários que odeia feedback e também se recusam a usar --silent ".

Embora eu não ache que nenhum dos gerenciadores de pacotes que você mencionou sejam bons exemplos (eles são todos muito barulhentos o tempo todo), eu concordo que alguma indicação de progresso para go get não faria mal . O GitHub em particular tem trechos de velocidades de clone bastante lentas, e o tempo de execução geral depende do número de dependências, o que não é óbvio ou conhecido pelo usuário de antemão, então ter que decidir ativamente usar -v não é realmente uma ótima solução.

Agora, uma barra de progresso não é realmente uma opção - é muito barulhenta por padrão, e nem todos os VCSs suportam barras de progresso por padrão. Ativar -v por padrão também é muito barulhento.

Infelizmente, não consigo pensar em um mecanismo que não seja barulhento e, ao mesmo tempo, forneça informações suficientes quando necessário.

Esta página foi útil?
0 / 5 - 0 avaliações