Estou usando o Adobe Premiere Pro 2018 para edição de vídeo. Quero configurá-lo com git para ter controle de versão do arquivo de projeto.
O arquivo de projeto (.prproj) é um gzip de um XML.
É possível configurar o git para comparar os XMLs dentro do arquivo de projeto quando faço o git diff?
Sim, você pode usar um filtro "textconv", que será usado pelo git para converter arquivos em um formato diferente durante a exibição. Ver:
Resumindo, primeiro você precisa definir o filtro via git config (sempre não rastreado):
Em seguida, atribua-o a arquivos .prproj via .gitattributes (rastreado) ou .git/info/attributes (não rastreado):
(O
diff
atributo é necessário para permitir a diferenciação total, ou seja, diga ao git que este arquivo deve ser tratado como texto e não como binário.)Você também pode usar este método para fazer conversores mais avançados, por exemplo, adicionalmente canonizar e embelezar o XML (se o programa gravar tudo como uma única linha longa).
No entanto, os filtros textconv são apenas para exibição. Armazenar um arquivo compactado no Git ainda tem a desvantagem de não haver similaridade entre as versões, então se o arquivo também for grande, fará com que o repositório cresça de acordo com cada versão. (Compare isso com arquivos de texto, que geralmente são muito semelhantes entre as versões, portanto, mesmo um longo histórico de confirmação pode ser compactado com delta com muita eficiência.)
Em vez disso, você pode querer usar filtros "manchar/limpar", que funcionam de maneira semelhante, mas seus resultados são permanentes - ou seja, o git armazena uma versão 'limpa' internamente e a transforma de volta (manchas) no checkout. A configuração ficaria assim:
E o arquivo de atributos ficaria assim:
Isso permite que você aproveite a compactação delta do Git, embora também tenha a desvantagem de que todo clone deve ter o filtro configurado em sua configuração do git (não pode ser distribuído automaticamente). Se alguém clonar o repositório sem ter os filtros ainda, precisará
git checkout --renormalize
.Novamente, você pode expandir o filtro 'limpo' para também embelezar o XML (xml_pp) e torná-lo diferente de uma maneira visualmente mais agradável.