Segundo a wikipedia: Um patch (termo da língua inglesa que significa, literalmente, “remendo”) é um programa de computador criado para atualizar ou corrigir um software de forma a melhorar sua usabilidade ou performance. Quando patches corrigem bugs ou vulnerabilidades de segurança, se dá o nome de bugfix.
Esta técnica pode ser utilizada como uma das formas de distribuir uma liberação de software. É muito utilizada em jogos para computadores de forma a atualizar o conteúdo disponível.
O comando
patch
UNIX: Uma patch (Unix) é um programa de computador do sistema operacional UNIX que aplica as diferenças textuais entre dois programas e, mais freqüentemente, a arquivos de computador contendo essas diferenças, ou arquivos diff.
De acordo com o manual: patch pega um arquivo de “patch”:
patchfile
contendo uma diferença lista produzida pelo programa diff e aplica aqueles diferenças em um ou mais arquivos originais, produzindo versões.
Normalmente, as versões corrigidas são colocadas no lugar do original.
Suponhamos que você tenha o seguinte arquivo em C++:
vim hello.cpp
E então, você cria um novo baseado nele e altera algumas coisas:
vim new_hello.cpp
Quando você rodar o comando diff com a parâmetro -u
você e gera o um arquivo de patch: file.patch
:
E então o conteúdo de file.patch
terá o seguinte código:
Apesar desse exemplo ser básico e poder alterar a linha manulamente, na maioria dos casos em projetos maiores, seria muito trabalho.
Logo, para aplicar o patch, como vimos na Sintaxe dele acima, basta rodar o comando patch
:
E se você for ver o conteúdo de hello.cpp
agora perceberá que está idêntico ao do new_hello.cpp
.
Fácil, né? Lógico que ainda há muitaaaas opções e vale à pela dar uma olhada no manual e no help:
Só aplicando um patch.