Aplicar um patch num ramo de funcionalidade

Esta página descreve um fluxo de trabalho para descarregar e aplicar patches a um espaço de trabalho local, baseado em “ramos tópicos” locais.

Nota: Também pode usar a ferramenta drupalorg-cli para criar um ramo de edição e aplicar o patch.

Prepare o repositório local

  1. Seguir os passos sobre a clonagem de um repositório Drupal git para fazer uma cópia local do repositório ou actualizar a sua cópia local existente para a última versão.
  2. Criar um “ramo de características” local para o problema em que está a trabalhar.
    git checkout -b - # e.g. 123456-some-bug

Obter e aplicar um ficheiro de correcção

Baixar o ficheiro de correcção do problema, e aplicar as alterações de código na correcção ao seu directório de trabalho (os comandos seguintes assumem que está numa janela terminal no directório raiz do projecto). Existem várias alternativas:

Também, existem muitos argumentos de linha de comando para o comando git apply. Um útil é -v, que dá uma saída mais verbosa:
git apply -v patchname.patchbr>Ver a documentação do git apply para mais informações.

Se o patch não se aplicar, e talvez esteja a receber um “Skipped patch …”, tente a mensagem patch comando (ver “Notas de rodapé” abaixo para mais informações) ou volte a colocar o patch:

patch -p1 < .patch

Versão do patch, adicionando o parâmetro -R:

patch -R -p1 < .patch

Submeter o patch

Se estás a planear trabalhar para melhorar o patch, o próximo passo é submeter o patch original ao teu ramo de repositório local:

git add FILESAFFECTEDgit commit -m "Patch COMMENTNUMBER by OTHERPERSON”

Quando tiveres terminado: Limpeza do código

Após teres terminado de testar o patch, vais querer fazer com que o teu repositório volte ao estado “limpo”:

  • Utiliza este comando para reverter o patch: git apply -R path/file.patch
  • Utiliza este comando para apagar o ramo de característica que criaste: git branch -D

Composer

Se estiver a manter o código para um site Drupal com Composer, e um dos projectos precisar de ter um patch:

* Para aplicar correcções utilizando o Composer, é necessário instalar o composer-patches project:

composer require cweagans/composer-patches:~1.0 --update-with-dependencies

Notas de rodapé

  • Também se pode aplicar correcções com git amgit am também é útil se os remendos foram criados por git format-patch.
  • O comando patch é útil para os patches que não se aplicam, uma vez que aplicará a maior parte do patch e, em seguida, poderá ser capaz de olhar para o ficheiro .rej que cria para os “hunks” rejeitados do patch, e corrigi-los manualmente. Se for demasiado complicado, tente alterar o patch.
  • li> uma vez que os ficheiros de patch em si nunca devem ser adicionados ao projecto, pode querer dizer a Git para os ignorar adicionando a linha *.patch ao ficheiro .git/info/exclude no projecto, ou a um ficheiro global ~/.gitignore. Alternativamente, pode descarregá-los para um local diferente.
  • Se tiver erros quando tentar aplicar um patch, verifique o seguinte:
    • O patch pode ter a codificação de fim de linha errada. O nosso padrão é utilizar a codificação de fim de linha ao estilo Unix (ver Directrizes de Remendos).
    • O remendo pode não corresponder à versão de desenvolvimento mais recente. Ver Correcções de alteração para saber como fundir em alterações posteriores.
    • Se o teste automático também assinalou a correcção como não sendo aplicável no momento em que foi criada, o programador que criou a correcção pode ter cometido um erro (tal como não utilizar Git ou não utilizar a versão de desenvolvimento mais recente).

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *