VERSION CONTROL WRAPPER Each version control module must provide these functions: XXX_command(url_tail, url_dict, nodelist, action) Execute a version control system command. XXX_list(url_tail, url_dict, directory, recursive) List entries currently in the version control system. Where "XXX" is equal to what appears in the "commit" attribute before "://". E.g., for "sccs://" the function is sccs_command(). Common arguments are: url_tail String: part of the "commit" attribute after XXX://. For: {commit = cvs://:pserver:user@foo.org/root {path = bar}} url_tail is: :pserver:user@foo.org/root It can be empty, in which case the module must figure out the required parameters itself. url_dict Dictionary of the "commit" attribute and its attributes. For: {commit = cvs://asdf/root {path = foobar}} url_dict is: {"name" : "cvs://asdf/root", "path" : "foobar"}. Useful attributes: path path to directory with nodes logentry message for commit log tag name for this version The arguments for XXX_command() are: nodelist List of Node objects for which the action is to be carried out. action String: Command to be executed. First argument of the ":verscont" command. Predefined are: refresh Update local version from repository. No-op for files that are already up-to-date. commit Update the repository for local changes. No-op for file that didn't change. File is added to repository when necessary. Do checkout/checkin when checkout is required. Don't change locking of the file. publish Like commit and leave the file unlocked. May also add a tag to this version. checkout Like refresh and additionally lock for editing when possible. checkin Like commit and leave the file unlocked. unlock Remove lock on file, don't change file in repository or locally. add Add file to repository. File does exist locally. remove Remove file from repository. File may exist locally. The return value must be zero when something went wrong, non-zero when the command worked successfully. The function can throw a UserError exception when called with wrong arguments. When there is something wrong that prevents version control to work (e.g., the repository doesn't exist) it should silently returning zero. A-A-P may try another method to obtain the file. The arguments for XXX_list() are: directory Absolute path name of the directory for which the listing is requested. recursive When non-empty or non-zero: recursively list directories. The return value must be a list of full file names. Directories are also to be included.