Git::Repository is a Perl interface to Git, for scripted interactions with repositories. It's a low-level interface that allows calling any Git command, whether porcelain or plumbing, including bidirectional commands such as 'git commit-tree'.
A Git::Repository object simply provides context to the git commands being run. It is possible to call the 'command()' and 'run()' methods against the class itself, and the context (typically current working directory) will be obtained from the options and environment.
As a low-level interface, it provides no sugar for particular Git commands. Specifically, it will not prepare environment variables that individual Git commands may need or use.
However, the 'GIT_DIR' and 'GIT_WORK_TREE' environment variables are special: if the command is run in the context of a Git::Repository object, they will be overridden by the object's 'git_dir' and 'work_tree' attributes, respectively. It is still possible to override them if necessary, using the 'env' option.
Git::Repository requires at least Git 1.5.0, and is expected to support any later version.
See Git::Repository::Tutorial for more code examples.