Na preparação do port, arquivos que foram adicionados ou mudados podem ser picked up com um recursivo diff(1) para depois feeding to patch(1). Cada conjunto de patches que você deseja aplicar deve ser coletado um arquivo chamado patch-* onde * denotas a sequencia em qual os patches serão aplicados -- estes são feitos em ordem alfabetica, assim aa primeiro, ab segundo e assim por diante. Se você deseja, você pode usar nomes que indicam os pathnames dos arquivos que são patched, como patch-Imakefile ou patch-src-config.h. Estes arquivos devem ser armazenados em PATCHDIR, de onde eles serão automaticamente aplicados. Todos patches devem ser relativos ao WRKSRC (normalmente o diretório que seu tarball do port se desempacota dentro, que estando onde a construção é feita). Para fazer consertos e melhorias facilmente, você deve evitar ter mais de um patch de conserto do mesmo arquivo (ex., patch-aa e patch-ab ambos mudando WRKSRC/foobar.c).
Não coloque RCS strings nos patches. O CVS mutilará-los quando nós colocamos os arquivos dentro da arvore do ports, e quando nós verificamos-as saídas novamente, eles sairão diferentes e o patch falhará. As strings RCS são cercadas por sinais de dollar ($), e tipicamente inicia com $Id ou $RCS.
Usando o recurso opção (-r) para diff(1) gerar patches é
sutil, mas por favor de olhe os patches resultantes para certificar-se que você não tem
nada desnecessário junk em lá. Em particular, diffs entre dois arquivos backup,
Makefiles quando o port usa Imake ou
GNU configure, etc., são desnecessários e devem ser apagados. Se
você teve que editar configure.in e executar autoconf para gerar configure, não pegue os diffs
faça configure (frequentemente cresce algumas milhares de
linhas!); defina USE_AUTOCONF=yes e pegue os diffs do configure.in.
Também, se você teve que apagar um arquivo, então você pode faze-lo no post-extract target melhor que como parte do patch. Uma vez você está feliz com o diff resultante, por favor divida-o dentro de um arquivo fonte por arquivo patch.