Gostaria de criar um patch de um gcc
branch 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:
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
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 p
instrui o patch a remover o prefixo do caminho para que os arquivos sejam identificados corretamente. Na maioria dos casos deveria ser 1
.
Remova --dry-run
se 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. git
mantém o histórico completo do projeto (normalmente, existem maneiras de capturar apenas uma parte). Não importa se the-stable-version
está em algum branch de desenvolvimento diferente (ou seja, o desenvolvimento foi bifurcado e o branch estável recebeu algumas correções de última hora).