Aplicação atômica do patch unix

1

Eu preparei um "patch" para meu cliente, que precisará aplicá-lo manualmente ao código dele. Se o patch for aplicado parcialmente devido a conflitos, todo o procedimento precisará ser revertido imediatamente.

Gostaria de saber se existe um argumento ou um script pequeno que eu possa enviar para eles que executa o aplicativo de correção atômica.

Obrigado.

    
por romaninsh 17.01.2012 / 13:32

3 respostas

1

git apply pode ser usado para isso. Não requer um repositório Git.

    
por 17.01.2012 / 13:36
1

Eu não sei o que e quantos arquivos precisam ser corrigidos. Meu trabalho favorito seria:

  • faça uma cópia do projeto de trabalho e aplique o patch à cópia

  • o patch foi bem sucedido? a cópia funciona? em seguida, mova o projeto de trabalho para project.old e a cópia para projetar

por 17.01.2012 / 13:45
1

Eu resolvi isso com o seguinte:

patch -f --dry-run < p  && patch -f < p >/dev/null || echo "Failed to patch"

Se a aplicação do patch não for bem sucedida durante a execução a seco, ela não aplica nada e fornece ao usuário a saída que ele pode me enviar de volta.

    
por 17.01.2012 / 16:23