Revision history for Git-Repository

1.320 2016-06-12 BOOK
    - Rewrite Git::Repository::Command's final_output() using
      System::Command's loop_on()
    - Fix a test that failed with Git versions with "comments" (Samit Badle)

1.319 2016-05-18 BOOK
    - The has_git() test function from Test::Git is now obsoleted by
      Test::Requires::Git. It will issue a warning for now, and will be
      removed in a future version.
    - Added tutorial entry "Initialize a test repository with a bundle"
    - Updated the "Sort git versions" tutorial entry with Git::Version::Compare
    - Use Test::Requires::Git instead of has_git to check if git is available
    - Fix a number of failing tests related to an incorrect plan (oops)
      or local git commit hooks.

1.318 2016-03-12 BOOK
    - Extend version support to all existing version
    - Let Git::Version::Compare handle all version comparison code
    - eg/build-git can now build all Git versions since 1.0.0
    - Minor documentation updates
    - URL corrections by DOLMEN

1.317 2016-02-13 BOOK
    - improved git binary detection in Git::Repository::Command
    - fixed version comparisons for 1.0.0a and 1.0.0b under Perl 5.6
    - test_repository( clone => ... ) now dies with a useful message
      when trying to call it with a broken Git
    - Git::Repository::Util provides utility functions for Git stuff
    - eg/build-git: a utility to build and install any Git version
    - Tutorial entry: "Ignore the system and global configuration files"
    - spelling fix (RT #110027 by Gregor Herrmann)
    - fix RT #89086 (reported by Alex Raguero)
    - new test: t/test-all-git.t to run the test suite against a directory
      full of git builds (if available)
    - tested against 513 versions of git (including all RC),
      from 1.0.0 to 2.7.1

1.316 2015-12-02 BOOK
    - avoid a warning if the filehandles have already been closed
      (related to System::Command 1.114 'interactive' option)
    - add examples for `git log` and using callbacks with `$r->run`
      in Git::Repository::Tutorial
    - git-2.5.2 test suite compatibility fix (Petr Šabata)

1.315 2015-07-29 BOOK
    - Show exit status in 'unknown git error' message (TIMB)

1.314 2015-05-23 BOOK
    - simplified the internals of version comparisons
    - give the correct result for comparisons involving 1.0.0a and 1.0.0b

1.313 2015-03-21 BOOK
    - add a section about Git::Raw in the SEE ALSO (written by its author)
    - document the availability of on CPAN (RT #100957)
    - added the list of contributors to the META file

1.312 2014-08-03 BOOK
    - test_repository() uses `git init-db` for init under older git
      versions (although the test suite hasn't yet been adapted to
      support really old versions of git)
    - fixed a typo in the error message for test_repository()
    - made some tests for failure a little more lax when looking for
      the "fatal:" string in the errput (i.e. look for it at the beginning
      of any line, not just the firts)
    - various minor documentation improvements
    - the "OTHER GIT WRAPPERS" is really a "SEE ALSO" section

1.311 2014-03-09 BOOK
    - avoid warnings from _is_git() when we get nothing out of "git"
    - pod syntax fix
    - fix typo in Todd Rinaldo's name
    - acknowledge Nathan Nutter's help in designing the clone option
      to test_repository()

1.310 2014-01-17 BOOK
    - add support for a 'clone' option in test_repository()
    - better document the test_repository() options
    - better document the options hash
    - make method names easier to link to throughout the documentation
    - tested against 350 versions of git (including all RC),
      from 1.5.0.rc0 to

1.309 2013-11-02 BOOK
    - replace use_ok by simply running perl -M$module -e1
    - some guidelines for naming attributes in plugins
    - split Git::Repository::Plugin::Log and its supporting modules
      (Git::Repository::Log and Git::Repository::Log::Iterator) out
      in their own distribution (Git-Repository-Plugin-Log) as of
      version 1.309 of both distributions

1.308 2013-08-08 BOOK
    - require System-Command 1.103, since 1.102 was somewhat broken
    - new tutorial item based on RT#87334

1.307 2013-07-26 BOOK
    - avoid creating zombie processes in _is_git
    - require the latest System-Command, as it properly works with
      FCGI, Plack et al.
    - various minor documentation improvements

1.306 2013-07-02 BOOK
    - document how to run git from cwd in Git::Repository::Tutorial
      (follow-up of RT #86154, thanks to Daniel B. Boorstein (DANBOO))
    - document how to avoid the translation of Git messages by using
      LC_ALL=C in Git::Repository::Tutorial
    - made tests more robust no matter which locale is defined
      (thanks to Lars Dieckow (DAXIM))

1.305 2013-06-16 BOOK
    - list the 'fatal' option in the documentation for run()
    - various fixes for t/24-errors.t
      (mostly for Win32, thanks to Christian Walde (MITHALDU))

1.304 2013-05-25 BOOK
    - the new 'fatal' option makes it possible to define in detail
      which exit status codes will make run() die, in addition to
      the defaults 128 and 129 (many thanks to Grant McLean for
      a great discussion about this, which inspired the feature)
    - add a section about 'fatal' in Git::Repository::Tutorial
    - let Dist::Zilla manage the author tests
    - fixed tests with older gits, and also moved requirements
      for some tests a little bit further in the past
    - tested against 326 versions of git (including all RC),
      from 1.5.0.rc0 to 1.8.3.rc3

1.303 2013-04-28 BOOK
    - now depends on System::Command 1.100 for proper Win32 support
    - thanks to a lot of testing help from Christian Walde (MITHALDU)
      the test suite passes on Win32 (by skipping tests of little

1.302 2013-03-01 BOOK
    - Git::Repository::Plugin::Log is now able to parse commits
      with completely empty log messages
    - Git::Repository::Plugin::Log is now able to parse commits
      containing multiline headers (like gpgsig and mergetag)

1.301 2013-01-21 BOOK
    - the following Git::Repository methods are obsolete,
      and will die when called: create, wc_path, repo_path
    - the following parameters to Git::Repository->new are obsolete,
      and will cause the constructor to die: repository, working_copy
    - switch to Dist::Zilla for maintaining the distribution

1.300 2013-01-07 BOOK
    - fixed support for overloaded objects (e.g. Path::Class objects)
      in Git::Repository::Command (RT #82373)
    - fixed Git::Repository::Log::Iterator to work with older gits
      when disabling colored output (thanks to Dominic Humphries)
    - fixed some cases where Git::Repository::Command and Git::Repository
      new() methods ignored some of their parameters. They now die when
      passed ambiguous or unexpected parameters.
      (follow-up of RT #82373, thanks to Michael G. Schwern)

1.29 2012-12-04 BOOK
    - added support for callbacks in run()
    - minor documentation improvements

1.28 2012-11-04 BOOK
    - disabled colored output from logs in Git::Repository::Log::Iterator
    - wc_path() and repo_path() accessors are deprecated and now warn
    - improved the inter-documentation links by liberal use of L<>
    - ignore commit hooks that may be included with templates (RT #80593)
    - test for quiet won't fail if no identity is defined (RT #80321)

1.27 2012-10-11 BOOK
    - Git::Repository::Command skips non-executable files when searching
      for a git command in the PATH
    - Fixed tests failing with a directory named git in the PATH (RT #80117)

1.26 2012-08-01 BOOK
    - added a 'quiet' option to silence warnings
    - improved carp level for the run() method
    - provide an example for the 'quiet' option in

1.25 2011-12-27 BOOK
    - None. It's as good as 1.24, without the stupid test fail.
    - fixed a test plan when a git binary is not available

1.24 2011-12-26 BOOK
    - the command cache for _is_git() is now properly populated
      when the git option is a command with options (e.g. sudo)
    - _is_git() still finds git when the PATH contains a directory
      named git in a better position (RT #72154)
    - Fix spelling errors fixed in Debian (RT #73079)
    - Defend against changes to $/ (RT #71621)

1.23 2011-12-04 BOOK
    - made t/07-version.t pass when /tmp is mounted noexec (RT #72610)

1.22 2011-09-06 BOOK
    - made t/21-submodule.t pass with git > (RT #70585)
    - made t/21-submodule.t pass with git <

1.21 2011-07-11 BOOK
    - fix a deep recursion caused by a change in System::Command 1.05
      (thanks to Thomas Klausner)
    - made t/21-submodule.t pass when git is not available or too old
      or no identity is configured

1.20 2011-06-09 BOOK
    - None. It's as good as 1.19, without the stupid test fail.
    - one test always failed if run outside of a git repository,
      so I didn't detect it, but all testers did :-(
      Kazuhiro Shibuya provided a patch!

1.19 2011-06-08 BOOK
    - new final_output() method to Git::Repository::Command,
      that does the git-specific error checking when collecting
      the final output
    - Git::Repository::Log::Iterator will now properly die/warn
      when the log command is incorrect (thanks to Lasse Makholm
      for the bug report and proposed patch)
    - Git::Repository::Command now supports an arrayref as the 'git'
      option value, thus allowing calling wrappers like sudo
      (thanks to Dominic Humphries for the initial patch)
    - moved the HOWTO part of the doc to Git::Repository::Tutorial

1.18 2011-04-16 BOOK
    - the create() method was fragile (parsing the output of
      porcelain commands) and is now obsolete
    - added an example for running git shortlog (RT #66783)

1.17 2011-02-01 BOOK
    - Git::Repository::Command now uses System::Command internally
    - skip some tests that needed a specific version of git
    - delete GIT_EDITOR in tests that check it (Nigel Metheringham)
    - getting a working Win32 implementation is now delegated
      to System::Command

1.16 2011-01-16 BOOK
    - the reaping of the child process is now delegated to a special
      Git::Repository::Command::Reaper object.
      Code such as my $fh = Git::Repository::Command->new(@cmd)->stdout()
      will now work as expected.
    - Test::Git::has_git() now accepts the usual options hash
    - fixed tests to pass again under Perl 5.6.2

1.15 2011-01-11 BOOK
    - experimental MSWin32 full support using pipes
      (thanks to BinGOs for pointing me to a perlmonks post by ikegami,
      that contained working code)
    - Git::Repository::Log now has a raw_message() accessor, that
      returns the message with 4-space indent output by git log
      (Note that this change is INCOMPATIBLE with previous versions,
      in which message() returned the indented log message, and you
      had to make up your own "clean" version).
    - no more skipping tests under MSWin32, but there are some issues
      with the win32 code, as sometimes the output or errput of the git
      command is lost (HELP!)
    - bundle Test::Git, a module providing a few utility functions
      for testing code requiring a git repository

1.14 2010-10-27 BOOK
    - complete rewrite of _has_git, which was renamed to _is_git,
      with a much improved cache for the "is this git valid?" info
    - calling new() with the 'git' option will now work correctly
      when there is no git in the PATH (fixes RT bug #62283,
      reported by Todd Rinaldo)
    - improved the plugin system design (thanks to Aristotle Pagaltzis)
    - fixes for making Git::Repository work with modules that do
      bad things to STDIN, STDOUT and STDERR (thanks to Todd Rinaldo)
    - improved tests on Win32 (thanks to Olivier Raginel (BABAR)
      for giving me access to a Win32 VM with Git installed)
    - sadly, the work on Win32 showed that Git::Repository doesn't
      fully support that platform, but the test suite safely skips
      the tests that hang under Win32. I hope to fix this over time.

1.13 2010-10-18 BOOK
    - using 'git' as an option of a Git::Repository object now works
      as expected
    - version() also accepts option hashes
    - plugin system to load new keywords in the Git::Repository namespace
    - Git::Repository::Plugin::Log provides the log() method with the
      help of Git::Repository::Log and Git::Repository::Log::Iterator
      (Thanks to Todd Rinaldo and Aristotle Pagaltzis for discussions
      and ideas about what became the plugin system.)
    - tested against 120+ versions of git, including all versions
      of the 1.6.* and 1.7.* branches up until

1.12 2010-10-04 BOOK
    - the input option can now be empty: it means "close stdin first"
    - if the input option is undef, it still means "don't touch stdin"

1.11 2010-10-02 BOOK
    - fixed a bug in version comparison
      (version is smaller than
    - skip tests that fail between between versions 1.7.1 and
      (thanks to Sébastien Aperghis-Tramoni for the private report)
    - fix abs_path dying on Win32 with a path to a non-existent file

1.10 2010-09-24 BOOK
    - Git::Repository::Command doesn't write to the command stdin
      if the input option is set to something empty
    - Git::Repository::Command now has a version number too
    - minor copy editing by Aristotle Pagaltzis

1.09 2010-08-18 BOOK
    - now handle SIGPIPE when writing to git stdin
      (fixes RT bug #60482, reported by Todd Rinaldo (TODDR))
    - new() ignores the 'input' option for git commands called
      during initialization
    - t/20-simple.t should stop failing with "Non-zero wait status: 13"
      as it has been doing since 1.05.

1.08 2010-08-17 BOOK
    - Git::Repository->new() now supports git versions older than 1.5.3
    - ensure we have some identity when committing
    - make tests require the lowest git version they support

1.07 2010-08-14 BOOK
    - support for option hash in create(), which is attached to the
      returned Git::Repository object
    - accessors for Git::Repository::Command objects
      (including a 'cmdline' accessor)
    - removed the wc_subdir() attribute, which is useless and
      redundant with the cwd option
    - completely rewrote the repo_path and wc_path computation in new()
    - support new (post-v1.7.1) clone output in create()
    - less confusing names for options and attributes:
      + new() now takes git_dir and work_tree
        (instead of repository and working_copy)
      + the corresponding attributes are now git_dir and work_tree
        (instead of repo_path and wc_path)
      + the older options and attributes are being kept for compatibility
    - tests for the case when GIT_DIR is not .git (Mark Lawrence)
    - protect git log tests against format.pretty (Aristotle Pagaltzis)
    - tests for backward-compatibility with repository, working_copy, etc.

1.06 2010-07-03 BOOK
    - none
    - just make sure all tests fail gracefully when git is not installed

1.05 2010-07-02 BOOK
    - version() method returns the git binary version
    - version_eq(), version_gt(), etc allow simple version comparison
      for the current git binary
    - allow providing a default option hash to Git::Repository->new()
    - Document git init behaviour changed in 1.6.5
    - extensive version comparison tests

1.04 2010-06-27 BOOK
    - create() now supports "reinitializing existing Git repository"
      (thanks to Michael G. Schwern)
    - test a few extra cases

1.03 2010-06-18 BOOK
    - fix module to work with Perl 5.6.x
    - support GIT_DIR & GIT_WORK_TREE environment variables, when
      run without a Git::Repository object, and even allow an
      override when there is one, for those who know what they're
    - fix the case where /tmp is a symlink to some other place
    - fix abs_path dying on Win32 with a path to a non-existent file

1.02 2010-06-15 BOOK
    - sensible defaults for Git::Repository->new() without parameters
    - correctly setup Git::Repository if working_copy points to a
      subdirectory of the actual work tree
    - wc_subdir() points to the given subdirectory
    - skip tests that fail if /tmp is a git repository

1.01 2010-06-14 BOOK
    - consider git failing with a usage message as a fatal error
    - don't bother testing too much if git is older than v1.6.0

1.00 2010-06-12 BOOK
    - Git::Repository provides context and a simple run() method
    - Git::Repository::Command is the actual workhorse
    - 94% test coverage