aecvsserver(1) aecvsserver(1) NNAAMMEE aecvsserver - serve CVS client protocol against Aegis projects SSYYNNOOPPSSIISS aaeeccvvsssseerrvveerr sseerrvveerr aaeeccvvsssseerrvveerr ppsseerrvveerr aaeeccvvsssseerrvveerr --VVEERRSSiioonn DDEESSCCRRIIPPTTIIOONN The _a_e_c_v_s_s_e_r_v_e_r command is used to serve the CVS client protocol. The repository, of course, is stored within Aegis. The server works by retrieving file contents from locations within Aegis change sets and repositories. When necessary, appropriate _a_e_g_i_s(1) commands are executed by the server to fulfill the requests. _T_h_i_s _c_o_d_e _i_s _s_t_i_l_l _e_x_p_e_r_i_m_e_n_t_a_l_. At the present time only a limited number of CVS commands are understood. If you would like to extend this code, contributions are welcome. The following commands are thought to work at this time: add, admin, checkout, commit, init, remove, update. sseerrvveerr To use the server, you will need to set the following environment variables: CVSROOT=:ext:_h_o_s_t_n_a_m_e/aegis CVS_RSH=ssh CVS_SERVER=aecvsserver ppsseerrvveerr It is also possible to use _a_e_c_v_s_s_e_r_v_e_r as a cvs pserver, with all the usual caveats about how insecure this access method is, because it transmits the password _a_l_m_o_s_t in the clear. The root and modules are as above. MMOODDUULLEESS The CVS concept of modules is mapped onto Aegis concept of projects and changes. The special CVSROOT administrative module is simulated. PPrroojjeeccttss aass MMoodduulleess Each Aegis project appears to the CVS client as a module; the module's name is the same as the Aegis project's name. This type of module isn't immediately useful except for the _c_v_s _e_x_p_o_r_t command, or to per- form a read-only _c_v_s _c_h_e_c_k_o_u_t command. You can't commit to a project-named module. This because Aegis requires all operations which would change the repository to be per- formed through a change set. It is theoretically possible to code _a_e_c_v_s_s_e_r_v_e_r to create a change (via _a_e_n_c(1) and _a_e_d_b(1) commands), then add the necessary files (via _a_e_n_f(1) and _a_e_c_p(1) commands), then build (via the _a_e_b(1) command), then test (via the _a_e_t(1) command), and finally to end development of the change (via the _a_e_d_e(1) command). As the CVS protocol documenta- tion says "The protocol makes it possible for updates to be atomic with respect to checkins; that is, if someone commits changes to several files in one cvs command, then an update by someone else would either get all the changes, or none of them. The current cvs server can't do this, but that isn't the proto- col's fault." This code is yet to be written. Contributions welcome. The protocol, however, doesn't make it particularly easy, either. The semantics of the Modify request change depending on whether it is _f_o_l_- _l_o_w_e_d by the commit request or the update request. CChhaannggeess aass MMoodduulleess Each Aegis change set also appears to the CVS client as a module; it's name is _p_r_o_j_e_c_t.C_n_u_m_b_e_r. All _c_v_s _a_d_d commands, _c_v_s _r_e_m_o_v_e commands, _c_v_s _u_p_d_a_t_e commands and _c_v_s _c_o_m_m_i_t commands are performed against the change set, not directly to the baseline. It is necessary for the change set to already exist, and once you have run the _c_v_s _c_o_m_m_i_t com- mand, it will the be necessary to use the _a_e_d_e(1) command and the rest of the usual Aegis process. Once a change is no longer in the _b_e_i_n_g _d_e_v_e_l_o_p_e_d state, it cannot be changed via _a_e_c_v_s_s_e_r_v_e_r(1) and you will need to create a new Aegis change set, and then _c_v_s _c_h_e_c_k_o_u_t a new client-side work area. Please note: if you are experimenting with the interface via _c_v_s _-_d _:_f_o_r_k_:_/_a_e_g_i_s or similar, the work area you create mmuusstt be outside the Aegis change set's development directory. CCVVSSRROOOOTT The CVSROOT module's contents are synthesized from Aegis meta-data. You can't add or modify files in this module; you need to administer Aegis directly with _a_e_g_i_s(1) commands. EEXXIITT SSTTAATTUUSS The _a_e_c_v_s_s_e_r_v_e_r command will exit with a status of 1 on any error. The _a_e_c_v_s_s_e_r_v_e_r 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. CCOOPPYYRRIIGGHHTT aecvsserver 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 aecvsserver program comes with ABSOLUTELY NO WARRANTY; for details use the '_a_e_c_v_s_s_e_r_v_e_r _-_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_c_v_s_s_e_r_v_e_r _-_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 aecvsserver(1)