<?xml version='1.0'?> <!--*-nxml-*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
    "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">

<!--
Copyright 2014 Anne LoVerso <anne.loverso@students.olin.edu>

SPDX-License-Identifier: LGPL-2.0+

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
-->

<refentry id="ostree">

    <refentryinfo>
        <title>ostree prune</title>
        <productname>OSTree</productname>

        <authorgroup>
            <author>
                <contrib>Developer</contrib>
                <firstname>Colin</firstname>
                <surname>Walters</surname>
                <email>walters@verbum.org</email>
            </author>
        </authorgroup>
    </refentryinfo>

    <refmeta>
        <refentrytitle>ostree prune</refentrytitle>
        <manvolnum>1</manvolnum>
    </refmeta>

    <refnamediv>
        <refname>ostree-prune</refname>
        <refpurpose>Search for unreachable objects</refpurpose>
    </refnamediv>

    <refsynopsisdiv>
            <cmdsynopsis>
                <command>ostree prune</command> <arg choice="opt" rep="repeat">OPTIONS</arg>
            </cmdsynopsis>
    </refsynopsisdiv>

    <refsect1>
        <title>Description</title>

        <para>
            This searches for unreachable objects in the current repository.  If unreachable objects are found, the command delete them to free space.  If the <option>--no-prune</option> option is invoked, the command will just print unreachable objects and recommend deleting them.
        </para>
    </refsect1>

    <refsect1>
        <title>Options</title>

        <variablelist>
            <varlistentry>
                <term><option>--no-prune</option></term>

                <listitem><para>
                    Only display unreachable objects; don't delete.
                </para></listitem>
            </varlistentry>

            <varlistentry>
                <term><option>--refs-only</option></term>

                <listitem><para>
                    Only compute reachability via refs.
                </para></listitem>
            </varlistentry>

            <varlistentry>
                <term><option>--delete-commit</option>=COMMIT</term>

                <listitem><para>
                    Specify a COMMIT to delete.
                </para></listitem>
            </varlistentry>

            <varlistentry>
                <term><option>--keep-younger-than</option>=DATE</term>

                <listitem><para>
		  All commits older than DATE will be
                  pruned.  The format of DATE is the same as that
                  accepted by GNU <literal>date</literal> utility - for more information
                  see <literal>info date</literal>.
		</para></listitem>
            </varlistentry>

            <varlistentry>
                <term><option>--depth</option>=DEPTH</term>

                <listitem><para>
                    Only traverse DEPTH (integer) parents for each commit (default: -1=infinite).
                </para></listitem>
            </varlistentry>

            <varlistentry>
                <term><option>--static-deltas-only</option>=DEPTH</term>

                <listitem><para>
                  This option may currently <emphasis>only</emphasis> be used in combination with
                  <option>--delete-commit</option>.  Previous versions of ostree silently accepted
                  the option without that, and ignored it.  However, there are desired use
                  cases for pruning just static deltas (while retaining the commits), and it's
                  likely at some point this option will be supported for use cases outside of just
                  <option>--delete-commit</option>.
                </para></listitem>
            </varlistentry>
        </variablelist>
    </refsect1>

<!-- Can we have an example for when it DOES prune? -->
    <refsect1>
        <title>Example</title>
        <para><command>$ ostree prune</command></para>
<programlisting>
        Total objects: 25627
        No unreachable objects
</programlisting>
    </refsect1>
</refentry>
