Plegar todos los bloques de código en Github o GitLab

Posted on Friday, August 25, 2023 in Programación web

Plegar todos los bloques de código en Github o GitLab

Reviso muy a menudo las diferencias entre versiones de un proyecto en Github o GitLab para revisar los cambios introducidos en una nueva versión, pero muchas veces solo estoy interesado en los cambios en un determinado tipo de ficheros. Por ejemplo, en los cambios introducidos en las dependencias de la nueva versión para saber cómo empaquetar el proyecto para Gentoo.

Esto hace que sea bastante incómodo ver diferencias muy largos que tienen cambios en muchos ficheros cuando yo solo estoy interesado en los cambios en un par de tipos de ficheros y el resto no me interesan.

Me resultaría muy práctico que se pudieran mostrar todos los cambios inicialmente plegados para yo ir revisando rápidamente los ficheros que se han cambiado y desplegar solo aquellos que me interesan.

Hay múltiples peticiones a GitLab para que esto mismo sea implementeado, pero aparentemente, es muy difícil o casi imposible.

Así que me he buscado mi propia forma de hacerlo con un bookmarklet en el navegador.

Un bookmarklet es un marcador en el navegador que tiene un código JavaScript que lleva a cabo alguna acción:

Una captura de la pantalla de edición de un marcador del navegador. En el nombre del marcador pone "GitLab collapse all diffs" y en el enlace del marcador pone la palabra "javascript" en minúsculas seguida de dos puntos y un código JavaScript

Ejemplo de un bookmarklet que ejecuta un código JavaScript

Usando los siguientes códigos JavaScript en un marcador del navegador, se puede conseguir una forma sencilla de plegar todos los bloques de código al mostrar diferencias en Github o GitLab de forma que después podamos desplegar manualmente solo las que nos interesan:

  • Github

    buttons=document.getElementsByClassName("btn-octicon"); for (var i=0; i<buttons.length; i++) if (buttons[i].getAttribute("aria-expanded") == "true") buttons[i].click(); void(0);
  • GitLab

    void($('.chevron-down').filter(":visible").click());

Si vas a usar estos bookmarklets, no the olvides de añadir javascript: delante del código al añadirlo al marcador del navegador como se muestra más arriba.