handling zip files

Steve Barnes gadgetsteve at hotmail.com
Sun Dec 15 16:55:57 UTC 2013


On 15/12/13 14:33, hamann.w at t-online.de wrote:
>>> IMHO the one type of binary file that it almost never makes sense to
>>> track is a .zip file - track the contents and generate the .zip file on
>>> the fly either using pythons zipfile module or using one of the command
>>> line zip file tools.
>>>
>>> Gadget/Steve
> Hi Steve,
>
> the problem is that the application designers chose to use non-text files as there storage format,
> so opening / saving the application file internally unpacks resp. creates a zip. This is similar to
> openoffice, and the analogy goes even further ... most of the zip members happen to be xml
>
> Normal use of the file is opening / modifying / saving it with its proper application, and while it would
> be possible to create a specialized version of open-source tools like OO or add a wrapper
> to closed-source tools, fellow users expect to see the native file format
>
> So if there was a way for mercurial to handle the unzipping transparently, it would help
> quite a lot because it would not disrupt the workflow. I would sort of expect the inner workings to be
> built on zipfile ...
>
> Regards
> Wolfgang
>
>
>
> _______________________________________________
> Mercurial mailing list
> Mercurial at selenic.com
> http://selenic.com/mailman/listinfo/mercurial
>
>
Hi Wolfgang,

I would consider having a hidden directory of a name derived from the 
actual name of the .zip file that contains the content, (mostly xml), 
and possibly a list of the files or a wildcard that specified which 
files to process, have a `precommit` hook that before the commit is 
generated unzips the content of the file(s) following the structure 
within the zip, over the existing directory structure and ensures that 
they are all 'added' to the repository.  Your .zip format files would be 
marked as ignored and the rest of the repository committed.

You will probably need to also invoke this same hook as a `preupdate` 
hook so that if the users have made any changes they are in the 
directory structure.

Then have an `update` hook|| that zips the content of the 
directory/directories back into the application files.

Committing, pushing, pulling and updating could easily be wrapped into a 
simplified user interface so that the users don't even know that they 
are using Mercurial.

Hope that has given you some ideas - the reference for hooks is here 
<http://hgbook.red-bean.com/read/handling-repository-events-with-hooks.html>.

Steve
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurial-scm.org/pipermail/mercurial/attachments/20131215/a39254cb/attachment-0002.html>


More information about the Mercurial mailing list