Artemis=======Artemis is a lightweight distributed issue tracking extension forMercurial_. Alpha-quality `git support`_ is recently available andis described in its own section below.Individual issues are stored in directories in an ``.issues`` subdirectory(overridable in a config file). Each one is a Maildir_ and each one is assumedto have a single root message. Various properties of an issue are stored in theheaders of that message... _Mercurial: http://www.selenic.com/mercurial/.. _`git support`: GitSupport_.. _Maildir: http://en.wikipedia.org/wiki/MaildirOne can obtain Artemis by cloning its repository:.. parsed-literal:: hg clone http://hg.mrzv.org/Artemis/or downloading the entire `repository as a tarball`_... _`repository as a tarball`: http://hg.mrzv.org/Artemis/archive/tip.tar.gzA git mirror is `hosted on GitHub`_... _`hosted on GitHub`: https://github.com/mrzv/artemisSetup-----In the ``[extensions]`` section of your ``~/.hgrc`` add:: artemis = /path/to/Artemis/artemisOptionally, provide a section ``[artemis]``, and specify an alternative path forthe issues subdirectory (instead of the default ``.issues``):: [artemis] issues = _issuesAdditionally, one can specify filters_ and output formats_... _formats: Format_Example-------Create an issue:: # hg iadd ... enter some text in an editor ... Added new issue 907ab57e04502afd # hg ilist 907ab57e04502afd ( 0) [new]: New issue # hg ishow 907 ====================================================================== From: ... Date: ... Subject: New issue State: new Detailed description. ----------------------------------------------------------------------Add a comment to the issue:: # hg iadd 907 ... enter the comment text ====================================================================== From: ... [snip] Detailed description. ---------------------------------------------------------------------- Comments: 1: [dmitriy] Some comment ----------------------------------------------------------------------And a comment to the comment:: # hg iadd 907 1 ... enter the comment text ... ====================================================================== From: ... [snip] Detailed description. ---------------------------------------------------------------------- Comments: 1: [dmitriy] Some comment 2: [dmitriy] Comment on a comment ----------------------------------------------------------------------Close the issue:: # hg iadd 907 -p state=resolved -p resolution=fixed -n ====================================================================== From: ... [snip] Detailed description. ---------------------------------------------------------------------- Comments: 1: [dmitriy] Some comment 2: [dmitriy] Comment on a comment 3: [dmitriy] changed properties (state=resolved, resolution=fixed) ----------------------------------------------------------------------No more new issues, and one resolved issue:: # hg ilist # hg ilist -a 907ab57e04502afd ( 3) [resolved=fixed]: New issueThe fact that issues are Maildirs, allows one to look at them in, for example,``mutt`` with predictable results:: mutt -Rf .issues/907ab57e04502afdCommands--------`iadd` ``[ID] [COMMENT]``> Add an issue, or a comment to an existing issue or comment. The comment is> recorded as a reply to the particular message. `iadd` is the only command> that changes the state of the repository (by adding the new issue files to> the list of tracked files or updating some of them), however, it does not> perform an actual commit unless explicitly asked to do so.options:| | | description ||-----|-----------------------|---------------------------------------|| -a | --attach VALUE [+] | attach file(s) || | | (e.g., -a filename1 -a filename2) || -p | --property VALUE [+] | update properties || | | (e.g. -p state=fixed, || | | -p state=resolved || | | -p resolution=fixed) || -n | --no-property-comment | do not add a comment about changed || | | properties || -m | --message VALUE | use <text> as an issue subject || -i | --index VALUE | 0 based index of the message to show || | | (default: 0) || -c | --commit | perform a commit after the addition |[+] marked option can be specified multiple times`ilist`> List issues associated with the projectoptions:| | | description ||-----|----------------------|----------------------------------------|| -a | --all | list all issues || | | (by default only those with state new) || -p | --property VALUE [+] | list issues with specific field values || | | (e.g., -p state=fixed, || | | -p state=resolved -p category=doc); || | | lists all possible values of a || | | property if no = sign is provided. || | | (e.g. -p category) || | --all-properties | list all available properties || -o | --order VALUE | order of the issues; choices: "new" || | | (date submitted), "latest" || | | (date of the last message) || | | (default: new) || -d | --date VALUE | restrict to issues matching the date || | | (e.g., -d ">12/28/2007)" || -f | --filter VALUE | restrict to pre-defined filter || | | (in .issues/.filter*) |[+] marked option can be specified multiple times`ishow` ``[ID] [COMMENT]``> Shows issue ID, or possibly its comment COMMENToptions:| | | description ||-----|---------------------|-----------------------------------------|| -a | --all | list all comments || -s | --skip VALUE | skip lines starting with a substring || | | (default: >) || -x | --extract VALUE [+] | extract attachments || | | (provide attachment number as argument) || -i | --index VALUE | 0 based index of the message to show || | | (default: 0) || -o | --output VALUE | extract output directory || | --mutt | use mutt to show issue |[+] marked option can be specified multiple times`ifind`> Shows a list of issues matching the specified QUERYoptions:| | | description ||-----|-------------------|-------------------------------------------|| -p | --property VALUE | issue property to match || | | [state, from, subject, date, priority, || | | [resolution, ticket, etc..] || | | (default: subject) || -c | --case-sensitive | case sensitive search || -r | --regex | use regular expressions || | | (exact option will be ignored) || -e | --exact | use exact comparison || | | like comparison is used if uspecified |[+] marked option can be specified multiple timesFilters-------Artemis scans all files of the form ``.issues/.filter*``, and processes them asconfig files. Section names become filter names, and the individual settingsbecome properties. For example the following:: [olddoc] category=documentation state=resolvedplaced in a file ``.issues/.filter`` creates a filter `olddoc` which can beinvoked with the `ilist` command:: hg ilist -f olddocFormat------One can specify the output format for the `ilist` command. The default lookslike:: [artemis] format = %(id)s (%(len)3d) [%(state)s]: %(subject)sArtemis passes a dictionary with the issue properties to the format string.(Plus ``id`` contains the issue id, and ``len`` contains the number of replies.)It's possible to specify different output formats depending on the properties ofthe issue. The conditions are encoded in the config variable names as follows:: format:state*resolved&resolution*fixed = %(id)s (%(len)3d) [fixed]: %(Subject)s format:state*resolved = %(id)s (%(len)3d) [%(state)s=%(resolution)s]: %(Subject)sThe first rule matches issues with the ``state`` property set to ``resolved``and ``resolution`` set to ``fixed``; it abridges the output. The secod rulematches all the ``resolved`` issues (not matched by the first rule); it annotatesthe issue's state with its ``resolution``.Finally, the dictionary passed to the format string contains a subset of`ANSI codes`_, so one could color the summary lines:: format:state*new = %(red)s%(bold)s%(id)s (%(len)3d) [%(state)s]: %(Subject)s%(reset)s.. _`ANSI codes`: http://en.wikipedia.org/wiki/ANSI_escape_code.. _GitSupport:Git---Artemis can now be used with git_.This requires the `git-artemis` script to be in the executable path,and the `artemis` module to be findable by python. This can be doneby installing using the supplied `setup.py`.Artemis commands are accessed from git like this:: git artemis listsimilarly for `show` or `add`. Arguments and flags are exactly thesame as for the mercurial version.It is not yet possible to specify formats via the `git config` command... _git: https://git-scm.com/