4.0.4 (2025-07-09)
- Add tests for Git::Base#set_index including deprecation (e6ccb11)
- Add tests for Git::Base#set_working including deprecation (ee11137)
- Add tests to verify Git::Object.new creates the right type of object (ab17621)
- Verify deprecated Git::Log methods emit a deprecation warning (abb0efb)
4.0.3 (2025-07-08)
- Correct the deprecation horizon for Git deprecations (b7b7f38)
- Fix Rubocop Layout/EmptyLinesAroundClassBody offense (1de27da)
- Internally create a Stash with non-deprecated initializer args (8b9b9e2)
- Report correct line number in deprecation warnings (cca0deb)
- Un-deprecate Git::Diff methods (761b6ff)
- Make tests that emit a deprecation warning fail (7e211d7)
- Update all tests to not use deprecated features (33ab0e2)
4.0.2 (2025-07-08)
- Call Git::Index#new correctly from initialize_components (07dfab5)
4.0.1 (2025-07-06)
- Fix Rubocop Layout/LineLength offense (52d80ac)
- Fix Rubocop Lint/EmptyBlock offense (9081f0f)
- Fix Rubocop Lint/MissingSuper offense (e9e91a8)
- Fix Rubocop Lint/StructNewOverride offense (141c2cf)
- Fix Rubocop Lint/SuppressedException offense (4372a20)
- Fix Rubocop Lint/UselessConstantScoping offense (54c4a3b)
- Fix Rubocop Metrics/AbcSize offense (256d860)
- Fix Rubocop Metrics/BlockLength offense (9c856ba)
- Fix Rubocop Metrics/ClassLength offense (exclude tests) (d70c800)
- Fix Rubocop Metrics/ClassLength offense (refactor Git::Log) (1aae57a)
- Fix Rubocop Metrics/ClassLength offense (refactor Git::Status) (e3a378b)
- Fix Rubocop Metrics/CyclomaticComplexity offense (abfcf94)
- Fix Rubocop Metrics/MethodLength offense (e708c36)
- Fix Rubocop Metrics/ParameterLists offense (c7946b0)
- Fix Rubocop Metrics/PerceivedComplexity offense (5dd5e0c)
- Fix Rubocop Naming/AccessorMethodName offense (e9d9c4f)
- Fix Rubocop Naming/HeredocDelimiterNaming offense (b4297a5)
- Fix Rubocop Naming/PredicateMethod offense (d33f7a8)
- Fix Rubocop Naming/PredicatePrefix offense (57edc79)
- Fix Rubocop Naming/VariableNumber offense (3fba6fa)
- Fix Rubocop Style/ClassVars offense (a2f651a)
- Fix Rubocop Style/Documentation offense (e80c27d)
- Fix Rubocop Style/IfUnlessModifier offense (c974832)
- Fix Rubocop Style/MultilineBlockChain offense (dd4e4ec)
- Fix Rubocop Style/OptionalBooleanParameter offense (c010a86)
- Fix typo in status.rb (284fae7)
- Remove duplicate methods found by rubocop (bd691c5)
- Result of running rake rubocop:autocorrect (8f1e3bb)
- Result of running rake rubocop:autocorrect_all (5c75783)
- Add rubocop todo file to silence known offenses until they can be fixed (2c36f8c)
- Avoid deprecated dsa for tests keys (1da8c28)
- Fix yarddoc error caused by rubocop autocorrect (58c4af3)
- Integrate Rubocop with the project (a04297d)
- Rename Gem::Specification variable from s to spec (4d976c4)
4.0.0 (2025-07-02)
- Users will need to be on Ruby 3.2 or greater
- Add Log#execute to run the log and return an immutable result (ded54c4)
- diff: Refactor Git::Diff to separate concerns and improve AP (e22eb10)
- Upgrade minimally supported Ruby to 3.2 (fb93ef1)
3.1.1 (2025-07-02)
- Announce default branch change in README (e04f08e)
- Update the project's default branch from 'master' to 'main' (a5aa75f)
3.1.0 (2025-05-18)
- Make Git::Log support the git log --merges option (df3b07d)
- Announce and document guidelines for using Conventional Commits (a832259)
- Skip continuous integration workflow for release PRs (f647a18)
- Skip the experiemental build workflow if a release commit is pushed to master (3dab0b3)
3.0.2 (2025-05-15)
- Trigger the release workflow on a change to 'master' insetad of 'main' (c8611f1)
- Automate continuous delivery workflow (06480e6)
- Enforce conventional commit messages with a GitHub action (1da4c44)
- Enforce conventional commit messages with husky and commitlint (7ebe0f8)
Changes since v3.0.0:
- b47eedc Improved error message of rev_parse
- 9d44146 chore: update the development dependency on the minitar gem
- f407b92 feat: set the locale to en_US.UTF-8 for git commands
- b060e47 test: verify that command line envionment variables are set as expected
- 1a5092a chore: release v3.0.0
Changes since v2.3.3:
- 534fcf5 chore: use ProcessExecuter.run instead of the implementing it in this gem
- 629f3b6 feat: update dependenices
- 501d135 feat: add support for Ruby 3.4 and drop support for Ruby 3.0
- 38c0eb5 build: update the CI build to use current versions to TruffleRuby and JRuby
- d3f3a9d chore: add frozen_string_literal: true magic comment
Changes since v2.3.2:
- c25e5e0 test: add tests for spaces in the git binary path or the working dir
- 5f43a1a fix: open3 errors on binary paths with spaces
- 60b58ba test: add #run_command for tests to use instead of backticks
Changes since v2.3.1:
- 7646e38 fix: improve error message for Git::Lib#branches_all
Changes since v2.3.0:
- e236007 test: allow bin/test-in-docker to accept the test file(s) to run on command line
- f4747e1 test: rename bin/tests to bin/test-in-docker
- 51f781c test: remove duplicate test from test_stashes.rb
- 2e79dbe Fixed "unbranched" stash message support:
- da6fa6e Conatinerised the test suite with Docker:
- 2e23d47 Update instructions for building a specific version of Git
- 70565e3 Add Git.binary_version to return the version of the git command line
Changes since v2.2.0:
- f8bc987 Fix windows CI build error
- 471f5a8 Sanatize object ref sent to cat-file command
- 604a9a2 Make Git::Base#branch work when HEAD is detached
Changes since v2.1.1:
- 7292f2c Omit the test for signed commit data on Windows
- 2d6157c Document this gem's (aspirational) design philosophy
- d4f66ab Sanitize non-option arguments passed to
git name-rev
- 0296442 Refactor Git::Lib#rev_parse
- 9b9b31e Verify that the revision-range passed to git log does not resemble a command-line option
- dc46ede Verify that the commit-ish passed to git describe does not resemble a command-line option
- 00c4939 Verify that the commit(s) passed to git diff do not resemble a command-line option
- a08f89b Update README
- 737c4bb ls-tree optional recursion into subtrees
Changes since v2.1.0:
- 6ce3d4d Handle ignored files with quoted (non-ASCII) filenames
- dd8e8d4 Supply all of the specific color options too
- 749a72d Memoize all of the significant calls in Git::Status
- 2bacccc When core.ignoreCase, check for untracked files case-insensitively
- 7758ee4 When core.ignoreCase, check for deleted files case-insensitively
- 993eb78 When core.ignoreCase, check for added files case-insensitively
- d943bf4 When core.ignoreCase, check for changed files case-insensitively
Changes since v2.0.1:
- 93c8210 Add Git::Log#max_count
- d84097b Update YARDoc for a few a few method
Changes since v2.0.0:
- da435b1 Document and add tests for Git::Status
- c8a77db Fix Git::Base#status on an empty repo
- 712fdad Fix Git::Status#untracked when run from worktree subdir
- 6a59bc8 Remove the Git::Base::Factory module
Changes since v2.0.0.pre4:
- 1afc4c6 Update 2.x release line description
- ed52420 Make the pull request template more concise
- 299ae6b Remove stale bot integration
- efb724b Remove the DCO requirement for commits
Changes since v2.0.0.pre3:
- 56783e7 Update create_github_release dependency so pre-releases can be made
- 8566929 Add dependency on create_github_release gem used for releasing the git gem
- 7376d76 Refactor errors that are raised by this gem
- 7e99b17 Update documentation for new timeout functionality
- 705e983 Move experimental builds to a separate workflow that only runs when pushed to master
- e056d64 Build with jruby-head on Windows until jruby/jruby#7515 is fixed
- ec7c257 Remove unneeded scripts to create a new release
- d9570ab Move issue and pull request templates to the .github directory
- e4d6a77 Show log(x).since combination in README
Changes since v2.0.0.pre2:
- 5d4b34e Allow allow_unrelated_histories option for Base#pull
Changes since v2.0.0.pre1:
- 023017b Add a timeout for git commands (#692)
- 8286ceb Refactor the Error heriarchy (#693)
Changes since v1.19.1:
- 7585c39 Change how the git CLI subprocess is executed (#684)
- f93e042 Update instructions for releasing a new version of the git gem (#686)
- f48930d Update minimum required version of Ruby and Git (#685)
Changes since v1.19.0:
- f97c57c Announce the 2.0.0 pre-release (#682)
Changes since v1.18.0:
- 3bdb280 Add option to push all branches to a remote repo at one time (#678)
- b0d89ac Remove calls to Dir.chdir (#673)
- e64c2f6 Refactor tests for read_tree, write_tree, and commit_tree (#679)
- 0bb965d Explicitly name remote tracking branch in test (#676)
- 8481f8c Document how to delete a remote branch (#672)
- dce6816 show .log example with count in README, fixes #667 (#668)
- b1799f6 Update test of 'git worktree add' with no commits (#670)
- dd5a24d Add --filter to Git.clone for partial clones (#663)
Changes since v1.17.2:
- 3c70 Add support for
--update-head-ok
tofetch
(#660) - b53d Do not generate yard documentation when building in TruffleRuby (#659)
- 5af1 Correctly report command output when there is an error (#658)
- b27a Add test to ensure that
Git.open
works to open a submodule (#655) - 5b0e Update Git.clone to set multiple config variables (#653)
Changes since v1.17.1:
- f43d6 Fix branch name parsing to handle names that include slashes (#651)
Changes since v1.17.0:
- 774e Revert introduction of ActiveSupport dependency (#649)
Changes since v1.16.0:
- 1311 Add deprecation mechanism (introduces runtime dependency on ActiveSupport) (#645)
- 50b8 Add the push_option option for Git::Lib#push (#644)
- a799 Make Git::Base#ls_tree handle commit objects (#643)
- 6db3 Implememt Git.default_branch (#571)
Changes since v1.15.0:
- 536d Fix parsing when in detached HEAD state in Git::Lib#branches_all (#641)
- 5c68 Fix parsing of symbolic refs in
Git::Lib#branches_all
(#640) - 7d88 Remote#branch and #merge should default to current branch instead of "master" (#639)
- 3dda0
#branch
name should default to current branch instead ofmaster
(#638) - d33d #checkout without args should do same as
git checkout
with no args (#637) - 0c90 #push without args should do same as
git push
with no args (#636) - 2b19 Make it easier to run test files from the command line (#635)
Changes since v1.14.0:
- b40d #pull with no options should do the same thing as
git pull
with no options (#633) - 9c5e Fix error when calling
Git::Lib#remove
withrecursive
orcached
options (#632) - 806e Add Git::Log#all option (#630)
- d905 Allow a repo to be opened giving a non-root repo directory (#629)
- 1ccd Rewrite worktree tests (#628)
- 4409 Fix Git::Branch#update_ref (#626)
Changes since v1.13.2:
- 0f7c4a5 Allow the use of an array of path_limiters and add extended_regexp option to grep (#624)
- 8992701 Refactor error thrown when a git command fails (#622)
- cf74b91 Simplify how temp files are used when testing Git::Base#archive (#621)
- a8bfb9d Set init.defaultBranch when running tests if it is not already set (#620)
- 9ee7ca9 Create a null logger if a logger is not provided (#619)
- 872de4c Internal refactor of Git::Lib command (#618)
- 29e157d Simplify test running and fixture repo cloning (#615)
- 08d04ef Use dynamically-created repo for signed commits test (#614)
Changes since v1.13.1:
- b6e031d Fix
Git::Lib#commit_data
for GPG-signed commits (#610) - b12b820 Fix escaped path decoding (#612)
- 667b830 Update the GitHub Action step "actions/checkout" from v2 to v3 (#608)
- 23a0ac4 Fix version parsing (#605)
- 429f0bb Update release instructions (#606)
- 68d76b8 Drop ruby 2.3 build and add 3.1 and 3.2 builds (#607)
- 8349224 Update list of maintainers (#598)
- 4fe8738 In ls-files do not unescape file paths with eval (#602)
- 74b8e11 Add start_point option for checkout command (#597)
- ff6dcf4 Do not assume the default branch is 'master' in tests
- 8279298 Fix exception when Git is autoloaded (#594)
See https://github.com/ruby-git/ruby-git/releases/tag/v1.12.0
- 292087e Supress unneeded test output (#570)
- 19dfe5e Add support for fetch options "--force/-f" and "--prune-tags/-P". (#563)
- 018d919 Fix bug when grepping lines that contain numbers surrounded by colons (#566)
- c04d16e remove from maintainer (#567)
- 291ca09 Address command line injection in Git::Lib#fetch
- 521b8e7 Release v1.10.2 (#561)
See https://github.com/ruby-git/ruby-git/releases/tag/v1.11.0
See https://github.com/ruby-git/ruby-git/releases/tag/v1.10.2
See https://github.com/ruby-git/ruby-git/releases/tag/v1.10.1
See https://github.com/ruby-git/ruby-git/releases/tag/v1.10.0
See https://github.com/ruby-git/ruby-git/releases/tag/v1.9.1
See https://github.com/ruby-git/ruby-git/releases/tag/v1.9.0
See https://github.com/ruby-git/ruby-git/releases/tag/v1.8.1
See https://github.com/ruby-git/ruby-git/releases/tag/v1.8.0
See https://github.com/ruby-git/ruby-git/releases/tag/v1.7.0
See https://github.com/ruby-git/ruby-git/releases/tag/v1.6.0
See https://github.com/ruby-git/ruby-git/releases/tag/v1.6.0.pre1
See https://github.com/ruby-git/ruby-git/releases/tag/v1.5.0
See https://github.com/ruby-git/ruby-git/releases/tag/v1.4.0
- Dropping Ruby 1.8.x support
- Adding Git::Diff.name_status
- Checking and fixing encoding on commands output to prevent encoding errors afterwards
- Adding Git.configure (to configure the git env)
- Adding Git.ls_remote [Git.ls_remote(repo_path_or_url='.')]
- Adding Git.describe [repo.describe(objectish, opts)]
- Adding Git.show [repo.show(objectish=nil, path=nil)]
- Fixing Git::Diff to support default references (implicit references)
- Fixing Git::Diff to support diff over git .patch files
- Fixing Git.checkout when using :new_branch opt
- Fixing Git::Object::Commit to preserve its sha after fetching metadata
- Fixing Git.is_remote_branch? to actually check against remote branches
- Improvements over how ENV variables are modified
- Improving thrade safety (using --git-dir and --work-tree git opts)
- Improving Git::Object::Tag. Adding annotated?, tagger and message
- Supporting a submodule path as a valid repo
- Git.checkout - supporting -f and -b
- Git.clone - supporting --branch
- Git.fetch - supporting --prune
- Git.tag - supporting
- Keeping the old escape format for windows users
- revparse: Supporting ref names containing SHA like substrings (40-hex strings)
- Fix warnings on Ruby 2.1.2
- Fixing mesages encoding
- Fixing -f flag in git push
- Fixing log parser for multiline messages
- Supporting object references on Git.add_tag
- Including dotfiles on Git.status
- Git.fetch - supporting --tags
- Git.clean - supporting -x
- Git.add_tag options - supporting -a, -m and -s
- Added Git.delete_tag
- Ruby 1.9.X/2.0 fully supported
- JRuby 1.8/1.9 support
- Rubinius support
- Git.clone - supporting --recursive and --config
- Git.log - supporting last and [] over the results
- Git.add_remote - supporting -f and -t
- Git.add - supporting --fore
- Git.init - supporting --bare
- Git.commit - supporting --all and --amend
- Added Git.remote_remote, Git.revert and Git.clean
- Added Bundler to the formula
- Travis configuration
- Licence included with the gem
- added camping/gitweb.rb frontend
- added a number of speed-ups
- Sped up most of the operations
- Added some predicate functions (commit?, tree?, etc)
- Added a number of lower level operations (read-tree, write-tree, checkout-index, etc)
- Fixed a bug with using bare repositories
- Updated a good amount of the documentation
- Added methods to the git objects that might be helpful
- Initial version