Logilab's development tools
===========================

Set of tools which aims to help the developpement process, including :

  * tools to check and build source and/or Debian packages

  * provides integration assistance to work with CubicWeb_, Mercurial_
    and GuestRepo_.

Set of elisp goodies including :

  * an emacs mode for pycover files
  * an emacs mode for ChangeLog files
  * a small set of emacs shortcuts used at logilab


ingrsh.(z)sh
------------

A shell library to source. It provides a ``ingrsh`` command that moves
the current working directory into the given shell repository and set
the ``PYTHONPATH`` and ``CDPATH`` environment variables accordingly.

The ``GUESTREPODIR`` environment variable defines where to search for for
shells (default to ``$HOME/hg/grshells/``)


grmerge/tagsmerge
-----------------

Merge tools to be used by Mercurial_, for .hgguestrepo and .hgtags files
respectively.

They must be activated from a Mercurial_ configuration file::

  [merge-patterns]
  .hgguestrepo = grmerge

  [merge-tools]
  grmerge.executable = path/to/grmerge
  grmerge.args = $local $base $other -o $output

hgext/jpl.py
------------

A Mercurial_ extension that eases interaction with a JPL forge.

The extension should be enabled from a Mercurial_ configuration file::

  [extensions]
  jpl = path/to/hgext/jpl.py
  # or, if it has been installed via the debian package:
  jpl =

  [lglb]
  forge-url = http://www.cubicweb.org

.. note::

  You can specify a default ``lglb/forge`` value in your main
  Mercurial configuration file (``~/.hgrc`` for Linux systems).  Then
  the local configuration file (``path/to/repository/.hg/hgrc``) can
  override this setting.


Revset functions
~~~~~~~~~~~~~~~~

These predicates retrieve information from the project's forge
(cubicweb-jpl instance) and are exposed as revset functions.

"tasks"
  Changesets linked to tasks to be done.

"reviewed"
  Changesets that are linked to reviewed patches in the forge

"inversion"
  Changesets that are linked to patches linked to tickets of given version+project

Examples::

  $ hg log -r "reviewed()"
  $ hg log -r "inversion(3.18.0)"


Templates
~~~~~~~~~

"tasks"
  List of Strings. The text of the tasks and comments of a patch.

  Examples:

  - display all tasks (and comments) of every patch::

      $ hg log --template='{tasks}\n'

  - display the first line of the description and the first line of
    every task not yet done for draft changesets written by alain that
    are not yet reviewed::

      $ hg log -G \
      --rev 'draft() and author(alain) and tasks() and not(reviewed())' \
      --template='{desc|firstline}\n{tasks % "{task|firstline}\n"}'


Commands
~~~~~~~~

tasks
  Displays tasks requested by reviewers on a patch on a forge.

ask-review
  Allows to ask review for a Patch produced by a changeset, eg.::

    $ hg ask-review # default to working directory's parent revision
    $ hg ask-review -r "draft() and ::."

.. _CubicWeb: http://www.cubicweb.org
.. _Mercurial: http://mercurial.selenic.com
.. _GestRepo: https://bitbucket.org/selinc/guestrepo
