aesvt(1) aesvt(1) NNAAMMEE aesvt - simple version tool SSYYNNOOPPSSIISS aaeessvvtt --CCHHeecckk__OOuutt --HHIIssttoorryy _f_i_l_e --FFiillee _o_u_t_p_u_t_-_f_i_l_e [ --ee _e_d_i_t ] aaeessvvtt --CCHHeecckk__IInn --HHIIssttoorryy _f_i_l_e --FFiillee _i_n_p_u_t_-_f_i_l_e [ --ee _e_d_i_t ] [ _n_a_m_e==_v_a_l_u_e ...] aaeessvvtt --LLiisstt --HHIIssttoorryy _f_i_l_e aaeessvvtt --QQuueerryy --HHIIssttoorryy _f_i_l_e aaeessvvtt --VVeerrssiioonn DDEESSCCRRIIPPTTIIOONN The _a_e_s_v_t program may be used to manage history version files. This is a minimalist history tool, which makes no provision for managing a work area. It is able to cope with binary files, and with reasonable efficiently if they are not too large. It has good end-to-end properties because it keeps a checksum for each file version, and a checksum for the whole history file. There is no provision for keyword substitution of any kind. A check- out will exactly reproduce the input file. A check-in will never alter the input file. OOPPTTIIOONNSS The following options are understood: --HHiissttoorryy _h_i_s_t_o_r_y_-_f_i_l_e This option is used to specify the name of the history file. --FFiillee _f_i_l_e_-_n_a_m_e This option is used to specify the name of the input or output file. On check-out, the file name "-" is understood to mean the standard output. There is nnoo equivalent for check-in. --EEddiitt _e_d_i_t_-_n_u_m_b_e_r This option is used to specify the edit number (version num- ber). On check-out, if no version number is specified, the most recent version is given. On check-in, if no version num- ber is specifiued (and it usually isn't), the previous version will have one added to it, or version 1 will be used if this is the first check-in. --CCHHeecckk__IInn This option is used to check a file into the history. --CCHHeecckk__OOuutt This option is used to check-out a file from the history. --ccoommpprreessssiioonn--aallggoorriitthhmm _n_a_m_e This option may be used to specify the compression to be used. They are listed on order of compression effeciency. none Use no compression (not always meaningful for all com- mands). gzip Use the compression used by the _g_z_i_p(1) program. bzip2 Use the compression used by the _b_z_i_p_2(1) program. More compression algorithms may be added in the future. --CCOOMMPPrreessss This option is deprecated in favour of the --ccoommpp--aallgg==ggzziipp or --ccoommpp--aallgg==bbzziipp22 options. --NNoo__CCOOMMPPrreessss This options is deprecated in favour of the --ccoommpp--aallgg==nnoonnee option. --LLiisstt This option is used to list the file's history. --QQuueerryy This option is used to query edit number of most recent check- in. --VVeerrssiioonn This option is used to print version number. All other options will produce a diagnostic error. See also _a_e_g_i_s(1) for options common to all aegis commands. All options may be abbreviated; the abbreviation is documented as the upper case letters, all lower case letters and underscores (_) are optional. You must use consecutive sequences of optional letters. All options are case insensitive, you may type them in upper case or lower case or a combination of both, case is not important. For example: the arguments "-project", "-PROJ" and "-p" are all inter- preted to mean the --PPrroojjeecctt option. The argument "-prj" will not be understood, because consecutive optional characters were not supplied. Options and other command line arguments may be mixed arbitrarily on the command line, after the function selectors. The GNU long option names are understood. Since all option names for _a_e_s_v_t are long, this means ignoring the extra leading '-'. The "----_o_p_t_i_o_n==_v_a_l_u_e" convention is also understood. EEXXIITT SSTTAATTUUSS The _a_e_s_v_t command will exit with a status of 1 on any error. The _a_e_s_v_t command will only exit with a status of 0 if there are no errors. EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS See _a_e_g_i_s(1) for a list of environment variables which may affect this command. See _a_e_p_c_o_n_f(5) for the project configuration file's _p_r_o_j_e_c_t___s_p_e_c_i_f_i_c field for how to set environment variables for all commands executed by Aegis. FFIILLEE FFOORRMMAATT 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. 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 check-in or check-out is attempted. 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 (ver- sion 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 bunzip2 algorithm (via libbz2). There is no diff or delta of any kind in the history file. 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 _d_i_f_f(1) style deltas, this also copes very will with moving blocks of data within the file. The use of bunzip2 formatting means there is also a checksum for the whole history file, which allows you to detect bad blocks in the header por- tions; it also means there is a simple way to extract the data from a history file even without the _a_e_s_v_t program, or for testing, or because you are curious. You can actually choose from a number of compression algorithms, including GNU Zip and bunzip2, via the -compression-algorithm option. More copmpresison algoritthms may be added in the future. The best available comression is used, because this results in the most compact history files. Future versions will always be able to access the com- pression used by earlier versions. EEnndd--TToo--EEnndd IIssssuueess See also Saltzer, J.H. _e_t _a_l (1981) _E_n_d_-_t_o_-_e_n_d _a_r_g_u_m_e_n_t_s _i_n _s_y_s_t_e_m _d_e_s_i_g_n, http://web.mit.edu/Saltzer/www/publications/endtoend/- endtoend.pdf XXddeellttaa This style of history file was inspired by RFC 3284 - _T_h_e _V_C_D_I_F_F _G_e_n_e_r_i_c _D_i_f_f_e_r_e_n_c_i_n_g _a_n_d _C_o_m_p_r_e_s_s_i_o_n _D_a_t_a _F_o_r_m_a_t. While the _a_e_s_v_t format does not use RFC3284 internally, the arguments for compression across file versions are just as relevant. CCOOPPYYRRIIGGHHTT aesvt version 4.25.D611 Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 Peter Miller The aesvt program comes with ABSOLUTELY NO WARRANTY; for details use the '_a_e_s_v_t _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command. This is free software and you are welcome to redistribute it under certain conditions; for details use the '_a_e_s_v_t _-_V_E_R_S_i_o_n _L_i_c_e_n_s_e' command. AAUUTTHHOORR Peter Miller E-Mail: pmiller@opensource.org.au /\/\* WWW: http://miller.emu.id.au/pmiller/ Reference Manual Aegis aesvt(1)