Para o cenário semelhante, usamos uma ferramenta Quilt - utilitário de gerenciamento de conjunto de patches: link
Basicamente você tem um diretório patches na raiz do seu projeto que contém vários patches independentes, gerenciados pelo quilt . O diretório do patch pode ter esta aparência:
patches/100_asserts.diff
patches/101_terminate_call.diff
patches/102_status_code477.diff
patches/107_parser.diff
patches/110_ssldefault.diff
Os patches são aplicados sequencialmente ( quilt push
), podem ser aplicados ( quilt pop
),
atualizado ( quilt refresh
) e assim por diante. Faz sentido separar patches para arquivos de acordo com sua lógica.
Na situação com mais repositórios, você pode criar um novo repositório git com dependências como submódulos git.
patches/ <-- patches repo01, repo02
repo01/ <-- git submodule
repo02/ <-- git submodule
Neste exemplo, o diretório de correções é gerenciado pelo git.
No caso de uso de repositório único, usamos o fork do repositório, adicionamos o diretório patches e mantemos as correções no mesmo repositório.
A atualização também é possível: colocando todos os patches por quilt pop -a
, git pull
, quilt push
patch um por um, resolva o conflito, se necessário, geralmente quilt refresh
faz o trabalho.
Existem também ferramentas que se integram diretamente ao git: