Ferramenta para criar um patch que modifica / adiciona arquivos dentro de uma estrutura de diretório

0

Eu tenho um conjunto de arquivos que precisam de um conjunto de alterações aplicado a eles.

Neste cenário, tenho um Java Application Server (distribuído por meio de um arquivo zip) que preciso aplicar um conjunto de configurações conhecidas e adicionar alguns plug-ins jar a uma pasta específica. Não quero simplesmente criar minha própria distribuição que é pré-modificada - gostaria de empacotar somente os arquivos alterados e torná-los aplicáveis a uma instalação nova.

Qual é a ferramenta mais simples para criar esse conjunto de alterações e aplicar esse mesmo conjunto de alterações no computador de outra pessoa?

Idealmente, a ferramenta pode funcionar sem ter que instalar nada no computador do usuário. O fluxo de trabalho funcionaria assim:

  1. Faça o download do arquivo zip original que contém a distribuição binária do aplicativo a ser modificado
  2. Descompacte o aplicativo em qualquer local personalizado. Talvez uma pasta sob a raiz da unidade C, talvez o Desktop
  3. Faça o download de um arquivo (e talvez do utilitário) que contenha o conjunto de alterações
  4. Aplique o conjunto de alterações ao diretório

Algum método que funcione tanto de maneira automatizada quanto manual seria ótimo.

Eu não gostaria de ter que configurar algum tipo de servidor para hospedar os patches. Estou bem com a instalação de uma ferramenta para poder criá-los, desde que eu não precise instalar nada na máquina de destino para aplicar o patch.

Eu considerei simplesmente criar um arquivo zip com subdiretórios. Não tenho certeza qual é a maneira mais fácil de detectar as diferenças e zip apenas as alterações seria. Eu gostaria de um método infalível que não requer uma tonelada de etapas manuais (fazer um diff e escolher manualmente as alterações seria muito propenso a erros).

Alcançar tamanho mínimo é bom, mas não é obrigatório.

    
por Merlyn Morgan-Graham 20.10.2011 / 11:25

2 respostas

0

Para os meus propósitos, como as alterações eram pequenas, era mais simples criar um arquivo zip contendo arquivos de substituição do que criar um patch. Dessa forma eu não tive que mexer com p-levels.

Para fazer isso, usei Beyond Compare , selecionei os arquivos alterados, copiei-os para um diretório com nome idêntico (com um caminho do pai), e zipou esse diretório com nome idêntico.

Para aplicá-lo, basta descompactá-lo sobre os arquivos existentes, substituindo todos.

Isso não detectará se as alterações são válidas ou não, ao contrário da resposta da RedGrittyBrick, que detectará isso , mas é mais simples de entender e funciona melhor para o meu cenário.

Também aconteceu que não precisei automatizar o processo. Se você fizer isso, existem maneiras de executar ferramentas de comparação a partir de um arquivo de lote, gerando uma lista de arquivos para zipar e usando um utilitário zip de linha de comando para armazenar o resultado.

    
por 07.12.2011 / 23:23
4

O conjunto de ferramentas clássico é o contexto diff e patch . Veja um guia de dez minutos para comparar e corrigir

    
por 20.10.2011 / 12:00