Esta é uma boa maneira de criar um patch?

Esta é uma boa maneira de criar um patch?

Gostaria de criar um patch de um gccbranch específico comparando-o com os lançamentos oficiais; então, quando eu descompactar o tarball da versão estável, posso aplicar o patch e obter o equivalente ao que estava naquele branch específico.

É a primeira vez que preciso criar um patch, então é a primeira vez que faço isso e minha principal preocupação é acertar as opções e a análise, já que estamos falando de um software extremamente importante

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

Isso é suficiente e é a melhor maneira de fazer isso?

Responder1

Sim, esta é uma boa maneira de criar um patch.

Resumidamente:

  1. Para criar patch para arquivo único, seu comando pode parecer

    diff -Naru file_original file_updated > file.patch

    onde

    • -N: trata os arquivos ausentes como vazios
    • -a: trata todos os arquivos como texto
    • -r: compare recursivamente quaisquer subdiretórios encontrados
    • -u: gera NUM (padrão 3) linhas de contexto unificado
  2. Para criar patch para diretório inteiro:

    diff -crB dir_original dir_updated > dfile.patch

    onde

    • -c: gera NUM (padrão 3) linhas de contexto copiado
    • -r: compare recursivamente quaisquer subdiretórios
    • -B: ignora alterações cujas linhas estão todas em branco

Afinal para aplicar este patch pode-se executar

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

onde switch pinstrui o patch a remover o prefixo do caminho para que os arquivos sejam identificados corretamente. Na maioria dos casos deveria ser 1.

Remova --dry-runse estiver satisfeito com o resultado impresso na tela.

Responder2

Se você quiser comparar o checkin mais recente do git com alguma versão estável, basta ir git diff the-stable-version(será necessário descobrir qual tag o descreve, provavelmente o número exato da versão ou alguma variante) no repositório. gitmantém o histórico completo do projeto (normalmente, existem maneiras de capturar apenas uma parte). Não importa se the-stable-versionestá em algum branch de desenvolvimento diferente (ou seja, o desenvolvimento foi bifurcado e o branch estável recebeu algumas correções de última hora).

informação relacionada