===========================================================================
A simple and powerful text-based interactive user interface for Mercurial_
===========================================================================


.. image:: https://asciinema.org/a/5s6ez9jgyubwt6nelohvjx7co.png
   :alt: asciicast
   :target: https://asciinema.org/a/5s6ez9jgyubwt6nelohvjx7co


Description
===========

Lairucrem_ provides a useful user interface to the Mercurial_ DVCS.

It is a text-based interactive interface that helps developpers on
their daily usage of Mercurial. Because it is a text-based interface,
it can be used over ssh tunnels which is helpful when working on a
remote machine.

Lairucrem_ displays the changeset tree and the patch content of the
focused changeset. You can interactively inspect the repository
history by changing the focused changeset. We put some effort to make
it quite responsive, even on huge repositories whith big patches.

Lairucrem_ can propose a set of actions that can be applied to the
focused changeset, like rebase, update, addremove, etc. A small set of
actions are available in the actual version but later releases will
propose more actions and a plugin system which will allow you to add
your own actions. You won't have to mess with a complex UI, just the
actions you need.

Lairucrem_ uses the command line interface of Mercurial. So it just
performs the commands you commonly run. It activates extensions
(the "official" ones) when there are needed.

We still work on lairucrem_, fill issues if you think something could
be improved.


Installation
============

System wide (administrator privilege required)
----------------------------------------------

.. code:: shell

  pip install lairucrem

User space (no specific privilege required)
-------------------------------------------

.. code:: shell

  pip install --user lairucrem


Development
===========

Environment
-----------

You may want to use `virtualenv <https://virtualenv.readthedocs.or>`_
to create an isolated Python environment.

.. code:: shell

  virtualenv /path/to/envs/lairucremenv
  source /path/to/envs/lairucremenv/bin/activate

Clone the repository:

.. code:: shell

  hg clone http://bitbucket.org/aleufroy/lairucrem
  cd lairucrem

Install dev dependencies and lairucrem (in development mode):

.. code:: shell

  pip install -r dev-requirements.txt -e .


Testsuite and checks
--------------------

Run the testsuites
..................

.. code:: shell

  py.test --doctest-modules --pylint -q

Note: The `--pylint` option enables coding standards checks. Take a
look at the `pylintrc` file for detailed coding rules used in
lairucrem_.


Test coverage
.............

.. code:: shell

  py.test --doctest-modules --cov=lairucrem --cov-report term-missing


Documentation test
..................

.. code:: shell

  pip install docutils
  python setup.py --long-description | rst2html --strict -

Tricks
......

I've added `pytest-xdist` to `dev_requirements.txt` which allows
pytest to watch for file system changes with the `-f` option.


Pull request
------------

Please check the followings before sending your pull request:

* Add yourself to the `CONSTRIBUTORS.txt` file.

* Check the new feature/fix by add new tests or by adapting existing
  tests (test coverage is useful here). If your change does not need
  test change, tell it in the commit message.

* Check that tests are all green, including the `--doctest-modules`
  and `--pylint` options. Note that you can disable falsy warnings
  from pylint (with caution) by adding a comment like:

  .. code:: python

    #pylint: disable=signature-differs

* Help me understand your patch with a few lines of description in the
  commit message (but do not translate your code to english :P). This
  makes the patch integration easier and quicker than it could be
  without it. You can also refer to an existing issue from the
  tracker_ -- I'm not a github/bitbucket addict, so let the commit
  message self sufficient.

In the meantime, you can send me a message on twitter (alainleufroy)
or on the #mercurial IRC channel (aleufroy).


Project info
============

:LICENSE: http://sam.zoy.org/wtfpl see LICENSE.txt
:HOME PAGE: http://bitbucket.org/aleufroy/lairucrem
:BUG REPORT: http://bitbucket.org/aleufroy/lairucrem/issues

Sponsors
========

* `Pythonian <http://pythonian.fr>`_

.. links

.. _lairucrem: http://bitbucket.org/aleufroy/lairucrem
.. _mercurial: https://mercurial-scm.org
.. _tracker: http://bitbucket.org/aleufroy/lairucrem/issues
