17 17 <ul>
18 18 <li><a href="#tinymce">TinyMCE</a></li>
19 19 <li><a href="#markitup">markitup!</a></li>
20 20 </ul>
21 21 </li>
22 22 <li><a href="#ticket-checkin-links">Link tickets to checkins</a></li>
23 23 <li><a href="#th1-usage">Fossil and Th1</a></li>
24 + <li><a href="#versionCompressed">Versioning compressed files</a></li>
24 25 </ul>
25 26
26 27 <h2><a name="CGI">Using <cite>Fossil</cite>'s Built-In CGI</a></h2>
27 28 <h3>Motivation</h3>
28 29 * You want to share a repository through your existing web infrastructure.
29 30 * You want to share more than one repository at the same time.
30 31
................................................................................
889 890 <h3>Caveats</h3>
890 891
891 892 <ul compact='compact'>
892 893 <li>puts "[hello hello]" doesn't work because [ triggers the
893 894 interpeter, use puts "&#91hello hello]'</li>
894 895 </ul>
895 896 </nowiki>
897 +</div>
898 +<div>
899 + <h2><a name="versionCompressed">Versioning compressed files</a></h2>
900 + <h3>Goal</h3>
901 + <p>Some file formats are actually zip archives containing text files. For
902 + example Microsoft Office 2007 and newer use docx, xlsx and pptx extensions to
903 + store what is merely xml files zipped into a file.</p>
904 + <p>When edits are made to such files a versioning system is not efficient
905 + because diffing is no more appropriate</p>
906 + <p>The idea is to version the decompressed folder. A script will toggle
907 + Compressed/Uncompressed state</p>
908 + <h3>Sample batch script for use with docx, xlsx and pptx documents</h3>
909 + <p>This script is useful under Windows. It requires zip.exe and unzip.exe
910 + that you can find for example in gnuwin32 ([http://getgnuwin32.sf.net]).</p>
911 + <p>You have three variables to set. Running this script will</p>
912 + <ul compact='compact'>
913 + <li>Autodetect whether the document is in compressed or uncompressed
914 + state</li>
915 + <li>Convert file My_document.docx to a folder named My_document.docx too</li>
916 + <li>Rename file <nowiki>[Content_Types]</nowiki>.xml to a name without
917 + brackets (brackets in file names are not supported by Fossil)</li>
918 + <li>Convert back My_document.docx to file My_document.docx
919 + </ul>
920 + <p>In this way you can work on a docx document, run the script, insert the
921 + uncompressed folder into fossil and run the script again to get your document
922 + back in editable state.</p>
923 + <pre>
924 +<font color="#808080"> 1 </font><font color="#3a5fcd"><i>:: toggle docx state (compressed / uncompressed)</i></font><br />
925 +<font color="#808080"> 2 </font><font color="#3a5fcd"><i>:: @echo off</i></font><br />
926 +<font color="#808080"> 3 </font><br />
927 +<font color="#808080"> 4 </font><font color="#8b4726">SET</font><font
928 +color="#8b4726"> DOCX</font><font
929 +color="#8b4726"><b>=</b></font>My_document.docx<br />
930 +<font color="#808080"> 5 </font><font color="#8b4726">SET</font><font
931 +color="#8b4726"> TMPFILE</font><font
932 +color="#8b4726"><b>=</b></font>tmp_version_compressed_archive.zip<br />
933 +<font color="#808080"> 6 </font><font color="#8b4726">SET</font><font color="#8b4726"> CMDZIP</font><font color="#8b4726"><b>=</b></font><font color="#228b22">"P:\bin\zip.exe"</font><br />
934 +<font color="#808080"> 7 </font><font color="#8b4726">SET</font><font color="#8b4726"> CMDUNZIP</font><font color="#8b4726"><b>=</b></font><font color="#228b22">"P:\bin\unzip.exe"</font><br />
935 +<font color="#808080"> 8 </font><br />
936 +<font color="#808080"> 9 </font><font color="#3a5fcd"><i>:: check whether it is in a directory or file state</i></font><br />
937 +<font color="#808080">10 </font><font color="#8b4726"><b>if</b></font><font color="#8b4726"><b> exist</b></font> <font color="#8b4726">%TEMP%</font>\<font color="#8b4726">%TMPFILE%</font> <font color="#8b4726">del</font> <font color="#27408b">/q</font> <font color="#228b22">"</font><font color="#8b4726">%TEMP%</font><font color="#228b22">\</font><font color="#8b4726">%TMPFILE%</font><font color="#228b22">"</font><br />
938 +<font color="#808080">11 </font><font color="#8b4726"><b>if</b></font><font color="#8b4726"><b> exist</b></font> <font color="#8b4726">%DOCX%</font>\NUL (<br />
939 +<font color="#808080">12 </font> <font color="#8b4726"><b>call</b></font><font color="#8b4726"><b><u> :zip_directory</u></b></font><br />
940 +<font color="#808080">13 </font> <font color="#8b4726"><b>goto</b></font><font color="#8b4726"><b><u> :end</u></b></font><br />
941 +<font color="#808080">14 </font>)<br />
942 +<font color="#808080">15 </font><font color="#8b4726"><b>if</b></font><font color="#8b4726"><b> exist</b></font> <font color="#8b4726">%DOCX%</font> (<br />
943 +<font color="#808080">16 </font> <font color="#8b4726"><b>call</b></font><font color="#8b4726"><b><u> :unzip_file</u></b></font><br />
944 +<font color="#808080">17 </font> <font color="#8b4726"><b>goto</b></font><font color="#8b4726"><b><u> :end</u></b></font><br />
945 +<font color="#808080">18 </font>)<br />
946 +<font color="#808080">19 </font><font color="#8b4726">echo</font><font color="#228b22"> </font><font color="#8b4726">%DOCX%</font><font color="#228b22"> not found</font><br />
947 +<font color="#808080">20 </font><font color="#8b4726"><b>goto</b></font><font color="#8b4726"><b><u> :end</u></b></font><br />
948 +<font color="#808080">21 </font><br />
949 +<font color="#808080">22 </font><font color="#8b4726"><b><u>:zip_directory</u></b></font><br />
950 +<font color="#808080">23 </font> <font color="#8b4726">echo</font><font color="#228b22"> Zipping </font><font color="#8b4726">%DOCX%</font><br />
951 +<font color="#808080">24 </font> <font color="#8b4726">pushd</font> <font color="#8b4726">%DOCX%</font><br />
952 +<font color="#808080">25 </font> <font color="#8b4726">ren</font> Content_Types.xml <nowiki>[Content_Types].xml</nowiki><br />
953 +<font color="#808080">26 </font> <font color="#8b4726">%CMDZIP%</font> -9 -r <font color="#228b22">"</font><font color="#8b4726">%TEMP%</font><font color="#228b22">\</font><font color="#8b4726">%TMPFILE%</font><font color="#228b22">"</font> .\*<br />
954 +<font color="#808080">27 </font> <font color="#8b4726"><b>if</b></font><font color="#8b4726"><b> not exist</b></font> <font color="#228b22">"</font><font color="#8b4726">%TEMP%</font><font color="#228b22">\</font><font color="#8b4726">%TMPFILE%</font><font color="#228b22">"</font> (<br />
955 +<font color="#808080">28 </font><font color="#3a5fcd"><i> :: cancel</i></font><br />
956 +<font color="#808080">29 </font> <font color="#8b4726">ren</font> <nowiki>[Content_Types]</nowiki>.xml Content_Types.xml<br />
957 +<font color="#808080">30 </font> <font color="#8b4726">popd</font><br />
958 +<font color="#808080">31 </font> <font color="#8b4726"><b>goto</b></font><font color="#8b4726"><b><u> :end</u></b></font><br />
959 +<font color="#808080">32 </font> )<br />
960 +<font color="#808080">33 </font> <font color="#8b4726">popd</font><br />
961 +<font color="#808080">34 </font> <font color="#8b4726">rmdir</font> <font color="#228b22">"</font><font color="#8b4726">%DOCX%</font><font color="#228b22">"</font> <font color="#27408b">/s</font> <font color="#27408b">/q</font><br />
962 +<font color="#808080">35 </font> <font color="#8b4726">move</font> <font color="#228b22">"</font><font color="#8b4726">%TEMP%</font><font color="#228b22">\</font><font color="#8b4726">%TMPFILE%</font><font color="#228b22">"</font> .<br />
963 +<font color="#808080">36 </font> <font color="#8b4726">ren</font> <font color="#228b22">"</font><font color="#8b4726">%TMPFILE%</font><font color="#228b22">"</font> <font color="#228b22">"</font><font color="#8b4726">%DOCX%</font><font color="#228b22">"</font><br />
964 +<font color="#808080">37 </font> <font color="#8b4726"><b>goto</b></font><font color="#8b4726"><b><u> :end</u></b></font><br />
965 +<font color="#808080">38 </font><br />
966 +<font color="#808080">39 </font><font color="#8b4726"><b><u>:unzip_file</u></b></font><br />
967 +<font color="#808080">40 </font> <font color="#8b4726">ren</font> <font color="#228b22">"</font><font color="#8b4726">%DOCX%</font><font color="#228b22">"</font> <font color="#228b22">"</font><font color="#8b4726">%TMPFILE%</font><font color="#228b22">"</font><br />
968 +<font color="#808080">41 </font> <font color="#8b4726">move</font> <font color="#228b22">"</font><font color="#8b4726">%TMPFILE%</font><font color="#228b22">"</font> <font color="#228b22">"</font><font color="#8b4726">%TEMP%</font><font color="#228b22">"</font>\<br />
969 +<font color="#808080">42 </font> <font color="#8b4726">mkdir</font> <font color="#228b22">"</font><font color="#8b4726">%DOCX%</font><font color="#228b22">"</font><br />
970 +<font color="#808080">43 </font> <font color="#8b4726">pushd</font> <font color="#228b22">"</font><font color="#8b4726">%DOCX%</font><font color="#228b22">"</font><br />
971 +<font color="#808080">44 </font> <font color="#8b4726">%CMDUNZIP%</font> <font color="#228b22">"</font><font color="#8b4726">%TEMP%</font><font color="#228b22">\</font><font color="#8b4726">%TMPFILE%</font><font color="#228b22">"</font><br />
972 +<font color="#808080">45 </font> <font color="#8b4726"><b>if</b></font><font color="#8b4726"><b> not exist</b></font> <nowiki>[Content_Types].xml</nowiki> (<br />
973 +<font color="#808080">46 </font><font color="#3a5fcd"><i> :: cancel</i></font><br />
974 +<font color="#808080">47 </font> <font color="#8b4726">popd</font><br />
975 +<font color="#808080">48 </font> <font color="#8b4726">rmdir</font> <font color="#228b22">"</font><font color="#8b4726">%DOCX%</font><font color="#228b22">"</font> <font color="#27408b">/s</font> <font color="#27408b">/q</font><br />
976 +<font color="#808080">49 </font> <font color="#8b4726">move</font> <font color="#228b22">"</font><font color="#8b4726">%TEMP%</font><font color="#228b22">\</font><font color="#8b4726">%TMPFILE%</font><font color="#228b22">"</font> .<br />
977 +<font color="#808080">50 </font> <font color="#8b4726">ren</font> <font color="#228b22">"</font><font color="#8b4726">%TMPFILE%</font><font color="#228b22">"</font> <font color="#228b22">"</font><font color="#8b4726">%DOCX%</font><font color="#228b22">"</font><br />
978 +<font color="#808080">51 </font> <font color="#8b4726"><b>goto</b></font><font color="#8b4726"><b><u> :end</u></b></font><br />
979 +<font color="#808080">52 </font> )<br />
980 +<font color="#808080">53 </font> <font color="#8b4726">ren</font> <nowiki>[Content_Types].xml</nowiki> Content_Types.xml<br />
981 +<font color="#808080">54 </font> <font color="#8b4726">del</font> <font color="#228b22">"</font><font color="#8b4726">%TEMP%</font><font color="#228b22">\</font><font color="#8b4726">%TMPFILE%</font><font color="#228b22">"</font><br />
982 +<font color="#808080">55 </font> <font color="#8b4726">popd</font><br />
983 +<font color="#808080">56 </font> <font color="#8b4726"><b>goto</b></font><font color="#8b4726"><b><u> :end</u></b></font><br />
984 +<font color="#808080">57 </font><br />
985 +<font color="#808080">58 </font><font color="#8b4726"><b><u>:end</u></b></font><br />
986 +<font color="#808080">59 </font><br />
987 +<font color="#808080">60 </font><font color="#3a5fcd"><i>:: vim: fenc=cp437</i></font>
988 + </pre>
989 +
896 990 </div>