From 2ca9786014c5d1dacfd8a6dd6e754ce7a118c1c7 Mon Sep 17 00:00:00 2001 From: Philipp Gesang Date: Fri, 16 May 2014 21:47:49 +0200 Subject: add readme --- README.rst | 124 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 README.rst diff --git a/README.rst b/README.rst new file mode 100644 index 0000000..2b6003f --- /dev/null +++ b/README.rst @@ -0,0 +1,124 @@ +----------------------------------------------------------------------- + Context Mirror Bot +----------------------------------------------------------------------- + +Program for creating and maintaining a mirror for Context_, intended to +be run as a cron job but also handy when checking for updates to +Context manually. + +----------------------------------------------------------------------- + Background +----------------------------------------------------------------------- + +With each release of the *current* and *beta* branches, a new zipball +containing the latest code is uploaded to the Pragma ADE servers and +announced on the `official website`_. Since the tree is no under SCM +nor browsable online, different workarounds have been put into place by +the community. The `first mirror`_ provided a reliable git repository +with the most recent code for many years. It was discontinued_ in early +2014. By that time, a similar mirror was installed on the +`Context Garden`_, but apparently it prevents cloning the repository. +Also, it’s a good thing in general to have some redundancy in case the +alternatives go down. + +----------------------------------------------------------------------- + How It Works +----------------------------------------------------------------------- + +The *Context Mirror Bot* scrapes abovementioned download pages for +timestamps of the most recent zips and matches them against the state +of a repository. When it detects a new zipball, the bot downloads and +extracts it into the local repo, committing the new state along with +its timestamp. Contrary to previous mirrors, this one keeps the *beta* +and *current* in separate branches, producing higher quality diffs. + +----------------------------------------------------------------------- + How-to +----------------------------------------------------------------------- +Install +******* + +To build the executable you need Ocaml_ (tested with version 4.01) as +well as Omake_. *Context Mirror Bot* requires the ``ocurl``, ``uri``, +and ``xmlm`` libraries. I recommend installing them through Opam_. + +If the dependencies are in place, simply issue ``omake`` in the +repository directory and the executable ``context_mirror_bot`` is +created. + +Run +*** + +To familiarize yourself with the options, run :: + + context_mirror_bot --help + +Currently this presents you with this list of options: + +--check check source timestamps +--status print status of local repo +--update update from sources +--prepare prepare local repository +--download download source packages +--clean remove leftover files +--push push to mirror +--files install config and wrapper files +--verbose enable verbose output + +To simply retrieve the current state of Context, choose ``--download``. +The destination directory is currently hardcoded in the variable +``repo_root`` in the program header -- adapt it to your needs. As long +as the target location is writable, the *Mirror Bot* will not leave it. +Run ``context_mirror_bot --clean`` to remove unnecessary temporary +files from the directory. + +In order to set up a mirror you need an SSH key. Store the private key +in the file ``context_mirror_bot_id_rsa`` inside the current working +directory and the *Mirror Bot*. The public key must be registered with +an online repository on a source code hoster like Bitbucket or Github.. + +Now edit the ``gitconfig`` variable in the program header to include +the name of the user you intend the *Mirror Bot* to run under. Also, +edit the variable ``mirror_repo`` to point to the destination +repository at the code hoster. Now recompile with ``omake`` and run +``context_mirror_bot --update`` -- the bot will retrieve the latest +sources and commit them on top of the latest state of the earlier +repository on Gitorious. The result is then pushed to the remote +server. + +----------------------------------------------------------------------- + Locations +----------------------------------------------------------------------- + +The author’s mirror resides in its own `repo at BitBucket`_ and is +committed to by a `dedicated user`_. + +----------------------------------------------------------------------- + About +----------------------------------------------------------------------- + +Written by `Philipp Gesang`_. Inspired by the `original script` by +Marius, the long-term maintainer of the third-party mirror. + +The *Context Mirror Bot* is released under the terms of the GNU General +Public License, version 3 (no later or earlier). See the file +``COPYING`` for the full license text. + +Context_ is supplied under the terms of the GNU General Public License, +version 2 (no later or earlier). See the file ``context-license`` for +details. This file will also be located in the mirror repository tree +under the name ``COPYING``. + +.. _Context: http://www.pragma-ade.com/ +.. _official website: http://www.pragma-ade.com/download-1.htm +.. _first mirror: https://gitorious.org/context +.. _discontinued: http://www.ntg.nl/pipermail/ntg-context/2014/077380.html +.. _Context Garden: http://git.contextgarden.net/context/context +.. _repo at Bitbucket: https://bitbucket.org/phg/context-mirror +.. _dedicated user: https://bitbucket.org/context-mirror-bot +.. _Ocaml: http://ocaml.org/ +.. _Opam: http://opam.ocamlpro.com/ +.. _Omake: http://omake.metaprl.org/index.html +.. _Philipp Gesang: mailto:philipp.gesang@alumni.uni-heidelberg.de +.. _original script: https://gitorious.org/context/context/source/d493b9c93ad826044bd17889da2ee099c8ed72d5:context_git_update.pl + -- cgit v1.2.3