O quilt é uma ferramenta para gerenciamento de pilhas de patches; é muito usado por desenvolvedores do kernel para manter e gerar patches para serem enviados.
Tem as seguintes vantagens:
A referência principal dele é esse How to suvive with many patches
Começando com uma árvore de arquivos qualquer, indique ao quilt o nome do patch que você quer criar:
$ quilt new quilt_tutorial1.patch Patch quilt_tutorial1.patch is now on top
Em seguida, você vai editar os arquivos que você quer que constem no patch. Duas maneiras de fazer isso
quilt edit arquivo1 #adiciona o arquivo e abre o $EDITOR para você editar o arquivo #ou quilt add arquivo1 #apenas adiciona o arquivo no patch, para ser editar em outro editor
Se o arquivo foi adicionado uma vez, não precisa ser adicionado novamente, para o mesmo patch.
Após terminar suas alterações, gere o patch usando quilt refresh
$ quilt refresh Refreshed patch quilt_tutorial1.patch
Isso atualiza o arquivo de patch conforme as últimas alterações presentes nos arquivos. Agora, o patch está disponível em patches/quilt_tutorial1.patch (Se houver diretórios patches em níveis de diretório superiores, ele coloca lá)
O quilt também cria um arquivo series (no diretório patches), que tem toda a lista de patches presente
Depois de ter criado um patch, e executado quilt refresh, pode ser criado um novo patch sobre o patch existente. Basta repetir o procedimento de criar um novo patch (quilt new, quilt edit, quilt refresh)
Por exemplo, ao se criar dois patches em sequencia, é assim que fica o arquivo series
quilt_tutorial1.patch quilt_tutorial2.patch
Uma das grandes vantagens do quilt é permitir voltar no histórico de patches, colocar e tirar patches com facilidade, bem como alterar patches passados (sem muita dor)
Para remover o último patch da série: quilt pop. Pode ser usado quantas vezes quiser (até o fim da pilha).
quilt pop Removing patch quilt_tutorial2.patch Restoring tmp/quilt/arquivo2 Now at patch quilt_tutorial1.patch
Se você examinar os arquivos agora, estarão no mesmo estado de antes, quando só havia o quilt_tutorial1.patch
Neste momento, usando quilt edit, e em seguida quilt refresh, você pode alterar o quilt_tutorial1.patch
Em seguida, quilt push para reaplicar os patches existentes na fila que foram 'poped'.
$ quilt push Applying patch quilt_tutorial2.patch patching file tmp/quilt/arquivo2 Now at patch quilt_tutorial2.patch