Go: cmd / go: vaya a ser extremadamente lento sin comentarios de forma predeterminada

Creado en 17 nov. 2016  ·  3Comentarios  ·  Fuente: golang/go

¿Qué versión de Go estás usando ( go version )?

$ go version
go version go1.7.3 darwin/amd64

¿Qué hiciste?

go get parece no tener comentarios útiles de forma predeterminada.

Reproducir:
go get github.com/die-net/dhtproxy
Esto luego parece congelarse durante unos 10-15 minutos. No hay comentarios.

Finalmente descubrí que puedo:
go get -u -v github.com/die-net/dhtproxy
Para ver el progreso, y parece que debido a que youtube/vitess es absolutamente gigantesco, este comando tarda una eternidad.

¿Qué esperabas ver?

Esperaba ver algo como "Obteniendo proyecto, obteniendo deps, instalando deps, etc.", con algún tipo de barra de progreso.

¿Qué viste en su lugar?

Nada. Se queda ahí durante unos 10 minutos. Pensé que estaba roto.

La solución es obvia: habilite -v de forma predeterminada. Es terrible el diseño de la CLI tener un proceso que se ejecuta durante 10 minutos sin salida de forma predeterminada, simplemente parece que está roto.

FrozenDueToAge

Comentario más útil

La regla del silencio no es que los programas deban ser absolutamente silenciosos a menos que haya un error o se solicite una salida específicamente, es que los programas no deberían generar una salida innecesaria. Teniendo en cuenta los comentarios de que un proceso que tarda 15 minutos no se ha colgado no es innecesario, de hecho, es un buen diseño de CLI.

Como referencia, ninguno (0) de los otros administradores de paquetes que he probado son silenciosos por defecto.

$ 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 tiene una bandera --silent para esta función)

$ 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.

Creo que decir "porque es Unix" es un poco falso. Es _extremadamente_ común que los programas Unix con tareas de ejecución prolongada tengan barras de progreso; consulte rsync, wget, git, etc.

¿Cuál es la ventaja de no tener una barra de progreso aquí? Parece que los beneficios de "no parecer totalmente roto" superan ampliamente los beneficios de "no molestar a un pequeño porcentaje de usuarios que odian los comentarios y también se niegan a usar --silent ".

Todos 3 comentarios

Esa es la forma de Unix: estar en silencio por defecto, a menos que se solicite verbosidad o haya un error.

No creo que esto sea algo que cambiemos. Incluso más personas estarían en contra de lo que considerarían spam (-v) de forma predeterminada.

La regla del silencio no es que los programas deban ser absolutamente silenciosos a menos que haya un error o se solicite una salida específicamente, es que los programas no deberían generar una salida innecesaria. Teniendo en cuenta los comentarios de que un proceso que tarda 15 minutos no se ha colgado no es innecesario, de hecho, es un buen diseño de CLI.

Como referencia, ninguno (0) de los otros administradores de paquetes que he probado son silenciosos por defecto.

$ 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 tiene una bandera --silent para esta función)

$ 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.

Creo que decir "porque es Unix" es un poco falso. Es _extremadamente_ común que los programas Unix con tareas de ejecución prolongada tengan barras de progreso; consulte rsync, wget, git, etc.

¿Cuál es la ventaja de no tener una barra de progreso aquí? Parece que los beneficios de "no parecer totalmente roto" superan ampliamente los beneficios de "no molestar a un pequeño porcentaje de usuarios que odian los comentarios y también se niegan a usar --silent ".

Si bien no creo que ninguno de los administradores de paquetes que ha mencionado sea un buen ejemplo (todos son demasiado ruidosos todo el tiempo), estoy de acuerdo en que alguna indicación de progreso para go get no vendría mal . GitHub, en particular, tiene tramos de velocidades de clonación bastante lentas, y el tiempo de ejecución general depende del número de dependencias, que no es obvio o conocido por el usuario de antemano, por lo que tener que decidir activamente usar -v no lo es realmente una gran solución.

Ahora bien, una barra de progreso no es realmente una opción: es demasiado ruidosa de forma predeterminada y no todos los VCS admiten barras de progreso de forma predeterminada. Habilitar -v de forma predeterminada también es demasiado ruidoso.

Desafortunadamente, no puedo pensar en un mecanismo que no sea ruidoso y que al mismo tiempo proporcione suficiente información cuando sea necesario.

¿Fue útil esta página
0 / 5 - 0 calificaciones