=head1 NAME

Git::Database::Tutorial - Learn how to use Git::Database

=head1 VERSION

version 0.001

=head1 SYNOPSIS

    use Git::Database;

    # do cool stuff with Git, using the following advice
    # and the Perl Git wrapper of your choice

=head1 GLOSSARY

=over 4

=item repository

The local Git repository, as managed by B<git>.

=item backend

A class doing the L<Git::Database::Role::Backend> role.
The L<Git::Database> module acts as a frontend that returns a backend
object.

It manages all interactions with the Git repository, via its L<store>.
A backend instance is always connected to a store instance.

The backend interface is split across several roles, each
requiring one or more access methods to be defined. The
roles are: L<Git::Database::Role::Backend> (this is
the minimum required role that a class must do to be
considered a backend), L<Git::Database::Role::ObjectReader>,
L<Git::Database::Role::ObjectWriter>, L<Git::Database::Role::RefReader>
and L<Git::Database::Role::RefWriter>.

L<Git::Database::Backend::None> is a special backend class
that is not connected to a store. The only supported method is
L<hash_object|Git::Database::Role::Backend/hash_object>.

=item store

The Perl Git wrapper that reads and write the data from and to the repository.

A store instance is always connected to an actual Git repository.

The only currently supported store is L<Git::Repository>.
Several branches exist in the development repository to add support for
other Git wrappers. Patches welcome!

=item object

An object from the Git object database. Represented in Perl by the
L<Git::Database::Object::Blob>, L<Git::Database::Object::Tree>,
L<Git::Database::Object::Commit> and L<Git::Database::Object::Tag>
classes.

=item ref

A reference (tag or branch) in the Git repository.

=back

=head1 AUTHOR

Philippe Bruhat (BooK) <book@cpan.org>.

=head1 COPYRIGHT

Copyright 2016 Philippe Bruhat (BooK), all rights reserved.

=head1 LICENSE

This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.

=cut
