Aplicando Patches

De Stoq Wiki
Ir para: navegação, pesquisa

Caso vc tenha uma instalação do stoq em produção e necessite aplicar alguma correção para problemas importantes, vc pode aplicar o patch manualmente.

Salve o patch

Primeiro, localize o bug que possui o patch e salve o arquivo correto. Caso tenha dúvidas, consulte algum desenvolvedor.

Identifique o alvo

Identifique se o patch deve ser aplicado ao stoq, stoqlib ou stoqdrivers. Isso normalmente está identificado na descrição do patch, mas caso não esteja, veja o conteúdo do arquivo.

Para cada arquivo alterado no patch, existe um cabeçalho similar a:

 Index: stoqlib/domain/sale.py
 ===================================================================
 --- stoqlib/domain/sale.py	(revision 8053)
 +++ stoqlib/domain/sale.py	(working copy)

Note o prefixo stoqlib no caminho do arquivo alterado. Isso indica que o patch deve ser aplicado ao stoqlib.

Um exemplo do stoq:

 Index: stoq/gui/pos/pos.py
 ===================================================================
 --- stoq/gui/pos/pos.py	(revision 8053)
 +++ stoq/gui/pos/pos.py	(working copy)

Caso o arquivo de patch possua mais de um "alvo" no mesmo conteúdo (por exemplo stoq e stoqlib) é preciso separar esses alvos antes. O que é do stoq deve ser aplicado ao stoq e o que é do stoqlib deve ser aplicado ao stoqlib (veja mais adiante). Para isso, coloque o conteúdo de cada "alvo" em um arquivo separado.

Aplicando o patch

Para aplicar o patch em um sistema em produção, é preciso executar o comando:

 sudo patch -p0 -d /usr/share/python-support/stoq < ~/Desktop/patch.diff
 
 sudo patch -p0 -d /usr/share/python-support/stoqlib < ~/Desktop/patch.diff
 
 sudo patch -p0 -d /usr/share/python-support/stoqdrivers < ~/Desktop/patch.diff

Escolhendo o comando correto para o alvo do patch.

É uma boa idéia fazer uma cópia de segurança dos arquivos que serão alterados e da base de dados, caso aconteça algum erro você estará seguro. Note que erros são comuns, uma vez que o patch pode ter sido criado depois de outras alterações nos mesmos arquivos (em outros bugs).

Seja cauteloso.