**********************************************************************
Repository
**********************************************************************

Everything starts either by creating a new repository, or by opening an
existing one.

.. contents:: Contents
   :local:


Functions
===================================

.. autofunction:: pygit2.init_repository

   Example::

     >>> from pygit2 import init_repository
     >>> repo = init_repository('test')            # Creates a non-bare repository
     >>> repo = init_repository('test', bare=True) # Creates a bare repository

.. autofunction:: pygit2.clone_repository

   Example::

     >>> from pygit2 import clone_repository
     >>> repo_url = 'git://github.com/libgit2/pygit2.git'
     >>> repo_path = '/path/to/create/repository'
     >>> repo = clone_repository(repo_url, repo_path) # Clones a non-bare repository
     >>> repo = clone_repository(repo_url, repo_path, bare=True) # Clones a bare repository


.. autofunction:: pygit2.discover_repository

   Example::

     >>> current_working_directory = os.getcwd()
     >>> repository_path = discover_repository(current_working_directory)
     >>> repo = Repository(repository_path)

.. autofunction:: pygit2.tree_entry_cmp(object, other)


The Repository class
===================================

The API of the Repository class is quite large. Since this documentation is
organized by features, the related bits are explained in the related chapters,
for instance the :py:meth:`pygit2.Repository.checkout` method is explained in
the Checkout section.

Below there are some general attributes and methods:

.. autoclass:: pygit2.Repository
   :members: ahead_behind, apply, create_reference, default_signature,
             descendant_of, describe, free, is_bare, is_empty, odb, path,
             path_is_ignored, reset, revert_commit, state_cleanup, workdir,
             write_archive

   The Repository constructor only takes one argument, the path of the
   repository to open.

   Example::

     >>> from pygit2 import Repository
     >>> repo = Repository('pygit2/.git')


The Odb class
===================================

.. autoclass:: pygit2.Odb
   :members:

.. autoclass:: pygit2.OdbBackend
   :members:
