.. _hg-big-files:

|hg| Large Files Extension
==========================

Large files, such as image or zip files can cause a lot of bandwidth overhead
during clone, push, and pull operations. To remove this inefficiency, |hg|
has a large files extension which tracks their revisions by checksums. This
means that the large files are only downloaded when they are needed as part
of the current revision. This saves both disk space and bandwidth.


Enabling HG Largefiles
++++++++++++++++++++++

Mercurial Largefiles extension is disabled by default within |RC| Server.

To enable Mercurial Largefiles Globally:

    - Go to :menuselection:`Admin --> Settings --> VCS`

    - Scroll down into `Mercurial settings`

    - Tick `Enable largefiles extension`

    - Save your settings.

Those settings apply globally to each repository that inherits from the defaults
You can leave `largefiles extension` disabled globally, and only enable it per
repository that would use the largefiles.


.. note::

    You might want to adjust the global storage location at that point, however
    we recommend leaving the default one created.


Installing and using the |hg| Largefiles
++++++++++++++++++++++++++++++++++++++++

To find out more, see the |hg| `Large Files Extensions Documentation`_.

To configure the large files extension, you need to set up your
:file:`~/.hgrc` file.

1. Open your :file:`~/.hgrc` file.
2. Add ``largefiles =`` to the ``[extensions]`` section.
3. Configure the ``[largefiles]`` section with the patterns and file size you
   wish |hg| to handle as large. The ``minsize`` option is specified in
   megabytes.
4. Save your changes.

.. code-block:: ini

    [extensions]
    hgext.churn =
    largefiles =
    rebase =
    record =
    histedit =

    [largefiles]
    patterns = re:.*\.(png|bmp|jpg|zip|tar|tar.gz|rar)$
    minsize = 10

For a complete :file:`~/.hgrc` file example, see :ref:`config-hgrc`.

.. _Large Files Extensions Documentation: http://mercurial.selenic.com/wiki/LargefilesExtension