De vez en cuando necesito revisar los submódulos de git para los que uso:
git submodule foreach 'git grep x'
Sin embargo, desde que cambié a zsh encuentro que se abre un mensaje menos para cada submódulo, incluso cuando no hay opciones. Lo que preferiría es que todos los resultados se impriman en la terminal.
Mi solución actual es llamar:
git submodule foreach 'git grep x' > /tmp/a && cat /tmp/a
Lo cual logra lo que quiero pero no puedo evitar sentir que me falta una opción o una solución más elegante. ¿Hay uno?
Respuesta1
Intente cambiar el buscapersonas que usa git:
GIT_PAGER="cat" git submodule foreach 'git grep x'
O si desea que se use menos, pero solo cuando la salida salga de la pantalla:
GIT_PAGER="less -FX" git submodule foreach 'git grep x'
Puede configurar el buscapersonas por proyecto usando git config
o, por supuesto, puede configurar las variables de entorno globalmente.
Respuesta2
Sólo para cubrir los otros métodos:
Método 1:--nopager
git submodule foreach 'git --nopager grep x'
Método #2: deshabilitar completamente el buscapersonas
git config --global core.pager cat
Desde la página de manual de git-config:
core.pager El comando que git usará para paginar la salida. Se puede anular con la variable de entorno GIT_PAGER. Tenga en cuenta que git establece la variable de entorno LESS en FRSX si no está configurada cuando ejecuta el buscapersonas. Se pueden cambiar estas configuraciones estableciendo la variable MENOS en algún otro valor. Como alternativa, estas configuraciones se pueden anular en un proyecto o de forma global configurando la opción core.pager. Configurar core.pager no tiene ningún efecto en el comportamiento de la variable de entorno LESS anterior, por lo que si desea anular la configuración predeterminada de git de esta manera, debe ser explícito. Por ejemplo, para deshabilitar la opción S de manera compatible con versiones anteriores, configure core.pager en less -+S. Git pasará esto al shell, que traducirá el comando final a LESS=FRSX less -+S.
Método #3:pager.<cmd>
También puede deshabilitar la paginación para subcomandos de git individuales usando buscapersonas. configuración en lugar de core.pager y puede cambiar su configuración por repositorio de git (omitir --global).
git config --global pager.grep cat
Desde la página de manual de git-config:
buscapersonas. Si el valor es booleano, activa o desactiva la paginación de la salida de un subcomando git particular al escribir en un tty. De lo contrario, activa la paginación para el subcomando usando el buscapersonas especificado por el valor de buscapersonas. Si se especifica --paginate o --no-pager en la línea de comando, tiene prioridad sobre esta opción. Para deshabilitar la paginación para todos los comandos, configure core.pager o GIT_PAGER en cat.
Método #4: Modificar el comportamiento de menos ( -F -X
)
Puede reconfigurar less para que busque "condicionalmente" solo archivos cuyo contenido sea más grande que el valor de una pantalla ( -F
), y deshabilitar less para que no borre la pantalla posteriormente ( X
).
git config --global core.pager less -F -X
Referencias
Respuesta3
En este caso solía volver a paginar todo el comando.
git submodule ... | less
pero perdemos cualquier formato potencial de los subcomandos.
Luego me di cuenta de que tenemos el mismo problema con el "estado de git", así que después de leer la respuesta a "¿Cómo puedo activar un buscapersonas para la salida del estado de git?" Yo sugeriría
git config --global pager.submodule "less -FX"