Os cartões perfurados foram usados na informática principalmente entre as décadas de 1950 e 1970. Nesse período, quando um erro de software era encontrado, nem sempre era viável refazer tudo. Por questões de custo, tempo e logística, tentava-se corrigir apenas o necessário, e isso incluía remendar fisicamente um cartão, cobrindo as perfurações erradas com pequenos pedaços de papel ou fita adesiva e, em seguida, perfurando novamente o local correto.
Esses remendos eram chamados de patches (plural de “patch”, “remendo”). Com o tempo, o termo migrou do mundo físico para o mundo não físico e passou a significar alterações pontuais aplicadas a um programa para corrigir defeitos ou ajustar comportamento sem reescrever o sistema todo.
Com o tempo, foi criado o utilitário patch, tradicional em sistemas Unix-like (Linux, macOS e BSD) usado para aplicar alterações em arquivos de texto, especialmente correções em código-fonte, a partir de um arquivo de diferenças (geralmente .diff ou .patch).
Normalmente, o(a) programador(a) possui a versão original do código (programa_v1), cria uma cópia para trabalhar e implementa as mudanças, gerando uma nova versão (programa_v2). Quando a correção está pronta, ele gera um arquivo com as diferenças entre as duas versões:
diff -u programa_v1 programa_v2 > correcao.patch
Com o arquivo correcao.patch em mãos, outra pessoa que tenha o código na versão base (programa_v1) pode aplicar exatamente as mesmas alterações usando o comando patch:
patch programa_v1 < correcao.patch
Depois disso, programa_v1 passa a ter as mesmas modificações que estavam em programa_v2.
PS: os comandos demonstrados acima podem ter pequenas variações de acordo com a plataforma usada.