¿Es esta una buena forma de crear un parche?

¿Es esta una buena forma de crear un parche?

Me gustaría crear un parche a partir de una gccrama específica comparándolo con los lanzamientos oficiales; Entonces, cuando descomprimo el archivo tar de la versión estable, puedo aplicar el parche y obtener el equivalente de lo que había en esa rama específica.

Es la primera vez que necesito crear un parche, así que es la primera vez que lo hago y mi principal preocupación es obtener las opciones y el análisis correcto, ya que estamos hablando de una pieza de software extremadamente importante.

diff -crB GccStable GccGit > /tmp/fromStabletoBranch.patch

¿Es esto suficiente y la mejor manera de hacerlo?

Respuesta1

Sí, esta es una buena forma de crear un parche.

En breve:

  1. Para crear un parche para un solo archivo, su comando puede verse así

    diff -Naru file_original file_updated > file.patch

    dónde

    • -N: trata los archivos ausentes como vacíos
    • -a: trata todos los archivos como texto
    • -r: compara recursivamente cualquier subdirectorio encontrado
    • -u: genera NUM (predeterminado 3) líneas de contexto unificado
  2. Para crear un parche para todo el directorio:

    diff -crB dir_original dir_updated > dfile.patch

    dónde

    • -c: genera NUM (predeterminado 3) líneas de contexto copiado
    • -r: compara recursivamente cualquier subdirectorio
    • -B: ignora los cambios cuyas líneas están todas en blanco

Después de todo, para aplicar este parche se puede ejecutar

patch -p1 --dry-run < dfile.patch

donde el conmutador ple indica al parche que elimine el prefijo de ruta para que los archivos se identifiquen correctamente. En la mayoría de los casos debería ser así 1.

Elimínelo --dry-runsi está satisfecho con el resultado impreso en la pantalla.

Respuesta2

Si desea comparar el último registro de git con alguna versión estable, simplemente vaya git diff the-stable-version(tendrá que averiguar qué etiqueta lo describe, probablemente el número de versión exacto o alguna variante) en el repositorio. gitmantiene el historial completo del proyecto (normalmente, hay formas de obtener solo una parte). No importa si the-stable-versionestá en alguna rama de desarrollo diferente (es decir, el desarrollo se bifurcó y la rama estable obtuvo algunas correcciones de último momento).

información relacionada