The vgit2 kit is a "give it a try" implementation of the git version control system tool for OpenVMS. The contents of the ZIP file are as follows: vgit2.exe cert.pem Vgit2.exe is the UNIX-style version of the tool. The UNIX-style version includes built-in usage notes (more on this later). The certificate file (cert.pem) is required if you are going to be interacting with some service like GitHub or BitBucket. To get started, extract the contents of the ZIP file and copy the files into your preferred location. Perform the following tasks (or add the commands to login.com, or whatever): 1. Define a foreign command for vgit2: $ vgit2 :== $device:[path]vgit2.exe 2. Define the logical name git$ssl_certs to point to the certificate file: $ define git$ssl_certs device:[path]cert.pem 3. Run the following command to set up some basic configuration details: $ vgit2 config user -n username -e youremail After this command completes, you should see in your login directory the file git.config, and it should contain the details that you specified in the above command. It is better to create this file before doing anything else to avoid being told by the program to do this the first time you come to do a push. Note that the values you specify are not particularly critical as they can be overridden if/when necessary; however if you will primarily be interacting with some service such as GitHub then you should specify your username for that service and the associated email address. As mentioned above, the UNIX-style version has some built-in usage notes (which saves me typing a whole pile of notes on how to use vgit). For example, running the program without specifying a command or specifying an invalid command, you will get the following output: $ vgit2 Usage: EXEC14$DKA200:[CAMERON.vgit]vgit2.exe;9 [options] [arguments] Command summary: add [-s] [-v] [-u] ... checkout [-s safe | create | force] [-a conflicts] [-r untracked | ignored] [ ...] clone [] commit [-a] [-m | -F ] config user [-s global | local] [-n ] [-e ] diff [-s] [-c] fetch [] init [-b] [-q] [-s true | false | group | all | world | umask] [-t ] [-n (no initial commit)] [] merge [-s safe | create | force] pull push [-t | ] remote add remote show rm [-b] [-s ] status [-b] [-f short | long | porcelain] tag -d | [-f] [-m ] [ | ] tag list [-l ] [pattern] Repositories and your login directory must be on an ODS-5 format disk. Files must be stream-lf record format. This is a basic summary of the available commands. If you now want a few more details on a specific command, run the program specifying the command in question and supply some invalid option or leave out a required parameter. For example: $ vgit2 init -h init: illegal option -- h Usage: init [-b] [-q] [-s true | false | group | all | world | umask] [-t ] [-n] [] Options: -b Create a bare repository (has no working tree). -q Quiet (only display errors and warnings). -s Repsoitory sharing (permitted values are "true", "false", "group", "all", "world", and "umask") -t Specify a template directory. -n Do not perform an initial commit. Arguments: Directory where the repository is to be created (the directory is created if necessary). If not specified, the current location is used. You will notice that some commands map reasonably well to real git (although some options may not be available); other commands do not map quite so well (currently). Some other points to note: 1. All files must be stream-lf. The program (currently) will exit with an error if you try to add a file to the repo that is not stream-lf. If for any reason the "add" command fails, note that nothing will have been added to the repository (it's an all or nothing scenario), and you can safely fix up the problem (maybe you have to convert a file to stream-lf) and re-run the "add" command. 2. When adding multiple of files we suggest using the "-v" (verbose) option flag. This will allow you to see which file the add operation is failing on (probably because the file is not stream-lf). 3. Only files and repositories located on ODS-5 are supported. 4. You may notice that it will be a little slow process to do an initial load or to clone repositories with a large number of files, but you only need to do this once, after which committing, pushing, and pulling changes should not be too painful. 5. If you want to use key-based authentication (as opposed to username/password over HTTPS, for example), you will need to define the logical names git$id_rsa and git$id_rsa_pub to map to the private and public key files, respectively (and of course your public key will need to be registered with the service (GitHub or whatever).