'\" t .\" quickie - a small fast C++ Wiki Wiki .\" Copyright (C) 2005 Peter Miller .\" .\" This program is free software; you can redistribute it and/or modify .\" it under the terms of the GNU General Public License as published by .\" the Free Software Foundation; either version 2 of the License, or .\" (at your option) any later version. .\" .\" This program is distributed in the hope that it will be useful, .\" but WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the .\" GNU General Public License for more details. .\" .\" You should have received a copy of the GNU General Public License .\" along with this program; if not, write to the Free Software .\" Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. .\" .\" MANIFEST: manual entry for the quickie_svt command .\" .ds n) quickie_svt .TH \*(n) 1 Quickie "Reference Manual" .SH NAME quickie_svt \- simple version tool .XX "quickie_svt(1)" "simple version tool" .SH SYNOPSIS \fB\*(n) \-Check_Output \-History\fP \fIfile\fP \fB\-File\fP \fIoutput-file\fP [ \fB\-e\fP \fIedit\fP ] .br \fB\*(n) \-Check_In \-History\fP \fIfile\fP \fB\-File\fP \fIinput-file\fP .br \fB\*(n) \-List \-History\fP \fIfile\fP .br \fB\*(n) \-Query \-History\fP \fIfile\fP .br \fB\*(n) \-Version\fP .SH DESCRIPTION The \fI\*(n)\fP program is used to manage Quickie's history version files. Normally the \fIquickie\fP(1) CGI progran does this by itself, but there may be times when a maintainer needs to access the history directly. (It's also useful for testing.) .PP .br .ne 1i .SH OPTIONS The following options are understood: .TP \fB\-History\fP \fIhistory-file\fP This option is used to specify the name of the history file. The usual suffix is "\f[CW],svt\fP". .TP 8n \fB\-File\fP \fIfile-name\fP This option is used to specify the name of the input or output file. On checkout, the file name "\-" is understood to mean the standard output. There is \fBno\fP equivalent for checkin. .TP 8n \fB\-Edit \fIedit-number\fP This option is used to specify the edit number (version number). On checkout, if no version number is specified, the most recent version is given. .TP 8n \fB\-Check_In This option is used to check a file into the history. .TP 8n \fB\-Check_Out This option is used to checkout a file from the history. .TP 8n \fB\-List This option is used to list the file's history. .TP 8n \fB\-Query This option is used to query edit number of most recent checkin. .TP 8n \fB\-Version This option is used to print version number. .PP All other options will produce a diagnostic error. .so z_rules.so .SH FILE FORMAT Each version in the history file consists of an RFC822 header, plus the file contents. The header includes (at least) the Content-Length, used to remember the length of the file data in bytes; the Checksum, used to remember the Adler32 checksum of the file data; and Version, used to remember the version number. The file data can be text or binary, because its length is determined by the header. There is no quoting mechanism of any kind for the data. Except for the mandatory fields, additional user-defined us-ascii meta-data may also be stored in the header. There is no diff or delta of any kind for any version. .PP This combination of header and data has good end-to-end behaviour, because there is a checksum to validate the file data against. Bad blocks in the data will be detected then next time a checkin or checkout is attempted. .PP The format of the history file consists of one or more file versions with the above layout, joined head-to-tail with no separators or boundary indicators of any kind. The versions are in descending order, from most recent (greatest edit number) to least recent (version number one). To determine where one version stops and the next version starts, use the Content-Length field in the header. The entire history file is then compressed using the GNU Zip algorithm (via zlib). There is no diff or delta of any kind in the history file. .PP The advantage of compressing the file is that there is usually a very high redundancy between file versions. For example, if two identical versions are checked in (not necessarily sequentially) the second copy will compress to only a few bytes. Unlike \fIdiff\fP(1) style deltas, this also copes very will with moving blocks of data within the file. The use of GNU Zip formatting means there is also a checksum for the whole history file, which allows you to detect bad blocks in the header portions; it also means there is a simple way to extract the data from a history file even without the \fI\*(n)\fP program, or for testing, or because you are curious. .PP This style of history file was inspired by RFC 3284 \- The VCDIFF Generic Differencing and Compression Data Format. While the \fI\*(n)\fP format does not use RFC3284 internally, the arguments for compression across file versions in still relevant. .so z_exit.so .so z_copyright.so