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
Original issue reported on code.google.com by
bil...@gebrproject.com
on 25 Jan 2013 at 12:01