Introdução
Um patch (literalmente, "remendo") é uma rotina ou um programa criado para modificar um software.Esta técnica é comumente utilizada como uma das formas de distribuir uma liberação de software.
É muito utilizada em atualizações de jogos para computadores (como Warcraft, Counter Striker, Tibia, Fifa, Pes ou Winning Eleven) e correção de falhas em sistemas operacionais como no Windows.
Para se ter um controle adequado do versionamento de um software, é recomendável a utilização de algum sistema para controle de versões, como o CVS - Concurrent Version System ou SVN - Subversion.
Utilização
No exemplo tomemos arquivos de texto (ascii), para ser mais fáceis de demonstrar, mas pode ser qualquer tipo de documento digital.Gerei o arquivo abaixo 'file.txt', contendo a listagem do /tmp de minha máquina, e este arquivo será utilizado para todos exemplos.
1 207782_433830870019694_540544551_n.jpg 2 301241_426986710682705_508360782_n.jpg 3 318413_426019217446121_14645177_n.jpg 4 50f3f97e3931e 5 50f41c7d93f26 6 50f41c7d94033 7 50f41c7d940f7 8 50f41c8521307 9 50f58332100d1 10 50f583321c922 11 50f583321cc7c [..] 53 50f6f56f6fe69 54 50f6f579c6f73 55 523528_425302940851082_654186542_n.jpg 56 546369_424357047612338_1660319043_n.jpg 57 564152_432751220106254_1544924945_n.jpg 58 829F1468CACDAD07147D0840CD72ECE4F07A8D43.23.0.1271.64_service_ipc 59 brito 60 CRX_75DAF8CB7768 61 file.txt 62 gnash-cookies.12909 63 gnash-cookies.13225 64 gnash-cookies.13301 65 gnash-cookies.13474 66 gnash-cookies.16089 67 gnash-cookies.16295 68 gnash-cookies.2537 69 gnash-cookies.2789 70 gnash-cookies.2873 71 gnash-cookies.2960 72 gnash-cookies.3524 73 gnash-cookies.4581 74 gnash-cookies.4657 75 gvtinv_415370082994.pdf 76 hsperfdata_brito 77 icedteaplugin-brito 78 keyring-rNVCN0 79 ngipc_000008F1 80 ngipc_ngslotd 81 orbit-brito 82 pulse-2L9K88eMlGn7 83 pulse-g13SmVqJqRsJ 84 pulse-PKdhtXMmr18n 85 spideroak_inotify_db.clgDGH 86 ssh-bBRkqUNy1725 87 unity_support_test.0 88 virtual-brito.qxTAE3
Agora na versão 2 do file.txt, vamos remover todas as linhas que possuem números.
1 brito 2 file.txt 3 hsperfdata_brito 4 icedteaplugin-brito 5 ngipc_ngslotd 6 orbit-brito 7 spideroak_inotify_db.clgDGH
E estes serão as duas versões/arquivos que usaremos deste tutorial.
Diferenças
Primeiramente, para aplicar as modificações ou atualizações; tem-se que levanta suas diferenças e armazenar em um arquivo. As diferenças entre os 2 arquivos, ou versões.comando diff
diff file.txt teste/file.txt > file.patch
1,58d0 < 207782_433830870019694_540544551_n.jpg < 301241_426986710682705_508360782_n.jpg < 318413_426019217446121_14645177_n.jpg < 50f3f97e3931e < 50f41c7d93f26 < 50f41c7d94033 < 50f41c7d940f7 < 50f41c8521307 < 50f58332100d1 < 50f583321c922 < 50f583321cc7c < 50f583321ceec < 50f58333d17f0 < 50f6b31817790 < 50f6b31841eaa < 50f6b31842094 < 50f6b31b0c095 < 50f6b4d747063 < 50f6b4d7472e4 < 50f6b4d7474d1 < 50f6b4d747618 < 50f6b4d74774b < 50f6b4d7a794f < 50f6b5b72d5d6 < 50f6b5db6cda7 < 50f6b5e545829 < 50f6b5ea3db2a < 50f6b5ef3cf3f < 50f6b5f4385c4 < 50f6b5f9721a3 < 50f6b5fe5eccc < 50f6b60359d5f < 50f6b60854f55 < 50f6b60d500ab < 50f6b6124b185 < 50f6b617855a7 < 50f6b61c41cef < 50f6b6213c512 < 50f6b62858b4c < 50f6b62b632af < 50f6b6305a6dd < 50f6b635a025e < 50f6b63a522a8 < 50f6b63f4f66b < 50f6b6444a7bf < 50f6b649458f9 < 50f6b64a759f0 < 50f6b64b4e73a < 50f6b64b671ae < 50f6f56f6f665 < 50f6f56f6fcdf < 50f6f56f6fdb6 < 50f6f56f6fe69 < 50f6f579c6f73 < 523528_425302940851082_654186542_n.jpg < 546369_424357047612338_1660319043_n.jpg < 564152_432751220106254_1544924945_n.jpg < 829F1468CACDAD07147D0840CD72ECE4F07A8D43.23.0.1271.64_service_ipc 60d1 < CRX_75DAF8CB7768 62,75d2 < gnash-cookies.12909 < gnash-cookies.13225 < gnash-cookies.13301 < gnash-cookies.13474 < gnash-cookies.16089 < gnash-cookies.16295 < gnash-cookies.2537 < gnash-cookies.2789 < gnash-cookies.2873 < gnash-cookies.2960 < gnash-cookies.3524 < gnash-cookies.4581 < gnash-cookies.4657 < gvtinv_415370082994.pdf 78,79d4 < keyring-rNVCN0 < ngipc_000008F1 82,84d6 < pulse-2L9K88eMlGn7 < pulse-g13SmVqJqRsJ < pulse-PKdhtXMmr18n 86,88d7 < ssh-bBRkqUNy1725 < unity_support_test.0 < virtual-brito.qxTAE3 comando subversion svn diff -r 10:11 file.txt > file.patch Index: file.txt =================================================================== --- file.txt (revisão 10) +++ file.txt (revisão 11) @@ -1,88 +1,7 @@ -207782_433830870019694_540544551_n.jpg -301241_426986710682705_508360782_n.jpg -318413_426019217446121_14645177_n.jpg -50f3f97e3931e -50f41c7d93f26 -50f41c7d94033 -50f41c7d940f7 -50f41c8521307 -50f58332100d1 -50f583321c922 -50f583321cc7c -50f583321ceec -50f58333d17f0 -50f6b31817790 -50f6b31841eaa -50f6b31842094 -50f6b31b0c095 -50f6b4d747063 -50f6b4d7472e4 -50f6b4d7474d1 -50f6b4d747618 -50f6b4d74774b -50f6b4d7a794f -50f6b5b72d5d6 -50f6b5db6cda7 -50f6b5e545829 -50f6b5ea3db2a -50f6b5ef3cf3f -50f6b5f4385c4 -50f6b5f9721a3 -50f6b5fe5eccc -50f6b60359d5f -50f6b60854f55 -50f6b60d500ab -50f6b6124b185 -50f6b617855a7 -50f6b61c41cef -50f6b6213c512 -50f6b62858b4c -50f6b62b632af -50f6b6305a6dd -50f6b635a025e -50f6b63a522a8 -50f6b63f4f66b -50f6b6444a7bf -50f6b649458f9 -50f6b64a759f0 -50f6b64b4e73a -50f6b64b671ae -50f6f56f6f665 -50f6f56f6fcdf -50f6f56f6fdb6 -50f6f56f6fe69 -50f6f579c6f73 -523528_425302940851082_654186542_n.jpg -546369_424357047612338_1660319043_n.jpg -564152_432751220106254_1544924945_n.jpg -829F1468CACDAD07147D0840CD72ECE4F07A8D43.23.0.1271.64_service_ipc brito -CRX_75DAF8CB7768 file.txt -gnash-cookies.12909 -gnash-cookies.13225 -gnash-cookies.13301 -gnash-cookies.13474 -gnash-cookies.16089 -gnash-cookies.16295 -gnash-cookies.2537 -gnash-cookies.2789 -gnash-cookies.2873 -gnash-cookies.2960 -gnash-cookies.3524 -gnash-cookies.4581 -gnash-cookies.4657 -gvtinv_415370082994.pdf hsperfdata_brito icedteaplugin-brito -keyring-rNVCN0 -ngipc_000008F1 ngipc_ngslotd orbit-brito -pulse-2L9K88eMlGn7 -pulse-g13SmVqJqRsJ -pulse-PKdhtXMmr18n spideroak_inotify_db.clgDGH -ssh-bBRkqUNy1725 -unity_support_test.0 -virtual-brito.qxTAE3
Comentários