De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Breno Leitao
Data de Publicação: 05 de fevereiro de 2008
Para quem não conhece, o quilt
é um gerenciador de patches muito útil que
apareceu dos scripts pessoais do Andrew Morton que ele publicava na LKML. O
quilt
tem se mostrado muito útil para quem trabalha com vários patches,
e frequentemente precisa fazer malabarismo com eles.
O conceito básico por traz do quilt
é que ele não é um gerenciador de
configuração, mas um gerenciador de patches que tem a função de trabalhar em
paralelo com o gerenciador de configuração. Com o quilt
você tem uma pilha de
patches, e trabalha com eles como se estivesse integrando e revertendo eles, mas
localmente, não tendo nenhuma relação com o gerenciador de configuração. Uma
vez que algum de seus patches ficam maduros para ser integrado, então você
simplesmente retira ele da lista do quilt
deixando ele na responsabilidade
do gerenciador de configuração.
Uma forma muito útil de usar o quilt
, e que eu particularmente utilizo
muito, é na depuração de aplicativos complexos, como o kernel do Linux, por
exemplo. Nessas aplicações é possível criar vários patches que adicionam um
printk(), muda um lock, altera um registrador, etc. E quando o desenvolvedor
chegar na alteração final, simplesmente reverte todos os outros patches inúteis
e manda para o gerenciador de configuração somente o patch efetivo. Note
que também é bem útil para você testar combinações de patches, por exemplo,
com o quilt
fica muito fácil testar patches combinados, como por exemplo,
testar um patch que altera um spinlock, com aquele patch que adiciona printk()
em todas as entradas e saidas de funções. Abaixo segue um explicação resumida
de como utilizar o quilt
.
A utilização do quilt
é muito simples, e para instalá-lo no sistema
operacional Ubuntu simplesmente digite:
sudo apt-get install quilt
Para utilizar o quilt
, você sempre seguirá o seguinte padrão de comando:
# quilt < comando>
Para criar um patch digite, quilt new < nome do patch>
, e após isso
já pode trabalhar no seu patch. O comando quilt series
, mostra todos
os patches que você tem, por exexemplo:
breno@cafe:~/Devel/linux/linux-2.6$ quilt new patch1 Patch patch1 is now on top breno@cafe:~/Devel/linux/linux-2.6$ quilt series patch1 leitao printks
Uma vez que você cria o patch, você precisa especificar os arquivos que
vão integrar aquele patch, ou seja, os arquivos que você irá modificar
e quer vê-los incluidos no patch. Para ver o seu patch no formato do
diff
universal, basta digitar quilt diff
. Segue um exemplo:
breno@cafe:~/Devel/linux/linux-2.6$ quilt add drivers/net/e1000/e1000_main.c File drivers/net/e1000/e1000_main.c added to patch patch1 breno@cafe:~/Devel/linux/linux-2.6$ vim drivers/net/e1000/e1000_main.c breno@cafe:~/Devel/linux/linux-2.6$ quilt diff Index: linux-2.6/drivers/net/e1000/e1000_main.c =================================================================== —- linux-2.6.orig/drivers/net/e1000/e1000_main.c 2008-02-01 10:15:19.000000000 -0200 +++ linux-2.6/drivers/net/e1000/e1000_main.c 2008-02-01 10:15:50.000000000 -0200
-5305,6 +5305,7
struct net_device *netdev = pci_get_drvdata(pdev); struct e1000_adapter *adapter = netdev->priv; + printk("Resuming...\n"); e1000_init_manageability(adapter); if (netif_running(netdev)) {
Para remover esse patch, basta digitar quilt pop
, e para adicionar novamente
quilt push
. Por exemplo:
breno@cafe:~/Devel/linux/linux-2.6$ quilt pop
Removing patch patch1
Restoring drivers/net/e1000/e1000_main.c
Porém note que ainda o patch está lá, e para readicionar basta digitar,
quilt push patch1
:
breno@cafe:~/Devel/linux/linux-2.6$ quilt push patch1 Applying patch patch1 patching file drivers/net/e1000/e1000_main.c Now at patch patch1 breno@cafe:~/Devel/linux/linux-2.6$ quilt applied patch1
Essa é uma pequena introdução a essa excelente ferramenta que ajuda em muito a maioria de nós, desenvolvedores que ficam loucos com tantos patches. :-)
Breno Leitão, formado pela Universidade de São Paulo em Ciência de Computação, mestre pela Universidade de Campinas, é Production Engineer no Facebook, Inglaterra.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários