¿Cómo diferenciar archivos directamente desde el repositorio Linux Kernel GIT?

5 minutos de lectura

avatar de usuario
Roberto S. Barnes

Me gustaría poder diferenciar archivos/directorios directamente desde el repositorio Linux Kernel GIT sin tener que descargar el código fuente completo.

Específicamente, estoy interesado en dos posibles soluciones:

  1. La capacidad de hacer diferencias a través de un navegador web (Firefox)
  2. Una utilidad GUI para Ubuntu que puede hacer diferencias remotas.
  3. Un tutorial sobre cómo configurar la opción #2

Editar

Como ejemplo de lo que estoy buscando, solía usar CrossVC para las tareas anteriores en un repositorio de CVS.

  • Git es repartido sistema de control de versiones, por lo que la solución #2 no es posible. Puedes hacer un clon superficial (git clone --depth=0 <URL>) para obtener solo el historial actual. Parte de lo que desea es posible a través de gitweb (git.kernel.org).

    – Jakub Narębski

    15 de noviembre de 2009 a las 14:15

avatar de usuario
Jakub Narębski

Gitweb en kernel.org permite ver la diferencia entre confirmaciones arbitrarias, consulte, por ejemplo, el siguiente enlace para ver la diferencia entre v2.6.32-rc6 y v2.6.32-rc7:
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;hp=refs/tags/v2.6.32-rc6;h=refs/tags/v2 .6.32-rc7
(utilizar parche enlace para obtener un parche simple que puede aplicar), y entre versiones arbitrarias de archivo / entre versiones arbitrarias de archivos arbitrarios, por ejemplo: diferencia a actual enlace en historia vista.

Desafortunadamente, ni la versión oficial de gitweb (distribuida junto con el propio Git), ni la bifurcación utilizada por kernel.org generan enlaces entre confirmaciones arbitrarias, por lo que tendrías que crear manualmente (crear a mano) las URL para dárselas a gitweb. En el caso de commitdiff ver (acción) los iparameters que necesita son 'h' (hachís) y 'hp' (padre hash); En el caso de blobdiff ver que son 'hb‘ (base hash) y 'hpb' (base padre hash), y también 'f' (nombre de archivo) y 'fp‘ (archivo principal).

Plantillas

Tenga en cuenta que core gitweb (pero no la bifurcación utilizada por kernel.org, actualmente) puede usar la versión path_info, por ejemplo:
http://repo.or.cz/w/git.git/blobdiff/A..B:/<filename>


como encontrarlo

  1. Encuentre en una interfaz web una confirmación que sea una confirmación de combinación, por ejemplo
    https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=1c5aefb5b12a90e29866c960a57c1f8f75def617

  2. Encuentre un enlace para diferenciar entre un compromiso y un segundo padre, por ejemplo
    https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/diff/?id=1c5aefb5b12a90e29866c960a57c1f8f75def617&id2=54a217887a7b658e2650c3feff22756ab80c7339

  3. Reemplace SHA-1 de confirmaciones comparadas con nombres de revisión o identificadores de revisión que desee comparar, por ejemplo, para generar diferencias entre v3.15-rc8 y v3.15-rc7
    https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/diff/?id=v3.15-rc8&id2=v3.15-rc7

    o para generar parche (rawdiff)
    https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/rawdiff/?id=v3.15-rc8&id2=v3.15-rc7

  • Supongo que no podría proporcionar una URL de plantilla para diferenciar dos versiones arbitrarias de un archivo arbitrario.

    – Robert S. Barnes

    16 de noviembre de 2009 a las 8:58

  • Esta respuesta está desactualizada (kernel.org cambió a cgit y las URL antiguas ya no funcionan). ¿Alguien sabe la nueva respuesta correcta?

    – R.. GitHub DEJA DE AYUDAR A ICE

    6 de junio de 2014 a las 4:22

  • @R.. agregó la sección “Cómo encontrarlo”, con un ejemplo usando la interfaz web actual de kernel.org usando cgit. HTH

    – Jakub Narębski

    6 de junio de 2014 a las 16:46

  • @JakubNarębski: ¡Gracias! ¿Cgit tiene alguna forma de obtener la diferencia como texto sin procesar en lugar de html, para que pueda descargarlo y aplicarlo? Para su información, mi interés en esto provino de CVE-2014-3153, donde los parches disponibles no están limpios para aplicar a la mayoría de las versiones del kernel; Inicialmente pensé que el cgit de kernel.org sería una manera fácil de obtener parches que se aplicarían a diferentes versiones, pero no pude hacerlo funcionar.

    – R.. GitHub DEJA DE AYUDAR A ICE

    6 de junio de 2014 a las 17:04

  • @R..: No vi el enlace a la vista de ‘parche’ (tal vez esté allí en alguna vista normal), pero al examinar las fuentes de cgit se mostró que hay rawdiff acción…

    – Jakub Narębski

    6 jun 2014 a las 18:10

El sistema que crea la diferencia (ya sea su servidor web o su sistema local) debe tener una copia completa (clon) del repositorio git.

Entonces no puedes hacer “diferencias remotas”.

Entonces, si quieres evitar hacer una git clone de todo el núcleo, ¿por qué no apuntar su navegador web a http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=summary?

  • Eso no tiene ningún sentido. En proyectos en los que he usado CVS, podía diferenciar de forma remota dos revisiones de un archivo en particular. ¿Por qué no podría hacer eso con GIT, que se supone que está a años luz de CVS?

    – Robert S. Barnes

    15 de noviembre de 2009 a las 13:02

  • Porque CVS es centralizado sistema de control de versiones (donde la mayoría de las acciones necesitan acceso a la red), y Git es repartido sistema de control de versiones (donde casi todas las acciones están en el clon local del repositorio). Consulte también stackoverflow.com/questions/802573/…

    – Jakub Narębski

    15 de noviembre de 2009 a las 14:11

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad