brauliobo / gebr

Automatically exported from code.google.com/p/gebr
0 stars 0 forks source link

Compactação adequada para rsync #1460

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
Os arquivos de projetos, linhas e fluxos são salvos compactados para 
economizar espaço em disco. Isto é feito utilizando a libz e os comandos de 
alto nível gzopen, gzwrite e gzclose, concentrados em uma única função 
(gebr_geoxml_document_save) no arquivo libgebr/geoxml/document.c.

Porém, em virtude do algoritmo de compactação, quando o xml sofre uma 
ligeira alteração pontual (até mesmo um único byte), a versão compactada 
produzida pela libz para ser salva em disco, fica completamente alterada.

Este comportamento inviabiliza tirar proveito de ferramentas como o rsync para 
fazer a sincronização de arquivos de projetos, linhas e fluxos entre 
máquinas, uma vez que como todo o arquivo fica alterado, ele terá que ser 
reenviado por completo.

Possivelmente, seria necessário alterar a função gebr_geoxml_document_save 
para utilizar as funções de mais baixo nível da libz, de maneira a poder 
compactar o xml por blocos, restringindo o escopo de uma alteração no xml 
quando compactada.

Original issue reported on code.google.com by bil...@gebrproject.com on 25 Jan 2013 at 12:01