Skip to content

Files

Latest commit

df3ea35 · Jul 9, 2025

History

History
605 lines (391 loc) · 25.3 KB

CHANGELOG.md

File metadata and controls

605 lines (391 loc) · 25.3 KB

Change Log

4.0.4 (2025-07-09)

Bug Fixes

  • Remove deprecation from Git::Path (ab1e207)
  • Remove deprecation from Git::Stash (9da1e91)

Other Changes

  • 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)

Bug Fixes

  • 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)

Other Changes

  • Make tests that emit a deprecation warning fail (7e211d7)
  • Update all tests to not use deprecated features (33ab0e2)

4.0.2 (2025-07-08)

Bug Fixes

  • Call Git::Index#new correctly from initialize_components (07dfab5)

Other Changes

  • Announce that the project has adopted RuboCop (3d6cac9)
  • Update comment to be accurate (3a87722)

4.0.1 (2025-07-06)

Bug Fixes

  • 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)

Other Changes

  • 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)

⚠ BREAKING CHANGES

  • Users will need to be on Ruby 3.2 or greater

Features

  • 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)

Other Changes

  • Remove unneeded explicit return statements (28e07ae)
  • Upgrade to ProcessExecuter 4.x (5b00d3b)

3.1.1 (2025-07-02)

Bug Fixes

  • Raise a Git::FailedError if depth < 0 is passed to Git.clone (803253e), closes #805

Other Changes

  • Announce default branch change in README (e04f08e)
  • Update the project's default branch from 'master' to 'main' (a5aa75f)

3.1.0 (2025-05-18)

Features

  • Make Git::Log support the git log --merges option (df3b07d)

Other Changes

  • 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)

Bug Fixes

  • Trigger the release workflow on a change to 'master' insetad of 'main' (c8611f1)

Other Changes

  • Automate continuous delivery workflow (06480e6)
  • Enforce conventional commit messages with a GitHub action (1da4c44)
  • Enforce conventional commit messages with husky and commitlint (7ebe0f8)

v3.0.1 (2025-05-14)

Full Changelog

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

v3.0.0 (2025-02-27)

Full Changelog

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

v2.3.3 (2024-12-04)

Full Changelog

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

v2.3.2 (2024-11-19)

Full Changelog

Changes since v2.3.1:

  • 7646e38 fix: improve error message for Git::Lib#branches_all

v2.3.1 (2024-10-23)

Full Changelog

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

v2.3.0 (2024-09-01)

Full Changelog

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

v2.2.0 (2024-08-26)

Full Changelog

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

v2.1.1 (2024-06-01)

Full Changelog

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

v2.1.0 (2024-05-31)

Full Changelog

Changes since v2.0.1:

  • 93c8210 Add Git::Log#max_count
  • d84097b Update YARDoc for a few a few method

v2.0.1 (2024-05-21)

Full Changelog

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

v2.0.0 (2024-05-10)

Full Changelog

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

v2.0.0.pre4 (2024-05-10)

Full Changelog

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

v2.0.0.pre3 (2024-03-15)

Full Changelog

Changes since v2.0.0.pre2:

  • 5d4b34e Allow allow_unrelated_histories option for Base#pull

v2.0.0.pre2 (2024-02-24)

Full Changelog

Changes since v2.0.0.pre1:

  • 023017b Add a timeout for git commands (#692)
  • 8286ceb Refactor the Error heriarchy (#693)

v2.0.0.pre1 (2024-01-15)

Full Changelog

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)

v1.19.1 (2024-01-13)

Full Changelog

Changes since v1.19.0:

  • f97c57c Announce the 2.0.0 pre-release (#682)

v1.19.0 (2023-12-28)

Full Changelog

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)

v1.18.0 (2023-03-19)

Full Changelog

Changes since v1.17.2:

  • 3c70 Add support for --update-head-ok to fetch (#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)

v1.17.2 (2023-03-07)

Full Changelog

Changes since v1.17.1:

  • f43d6 Fix branch name parsing to handle names that include slashes (#651)

v1.17.1 (2023-03-06)

Full Changelog

Changes since v1.17.0:

  • 774e Revert introduction of ActiveSupport dependency (#649)

v1.17.0 (2023-03-05)

Full Changelog

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)

v1.16.0 (2023-03-03)

Full Changelog

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 of master (#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)

v1.15.0 (2023-03-01)

Full Changelog

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 with recursive or cached 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)

v1.14.0 (2023-02-25)

Full Changelog

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)

v1.13.2 (2023-02-02)

Full Changelog

Changes since v1.13.1:

  • b6e031d Fix Git::Lib#commit_data for GPG-signed commits (#610)
  • b12b820 Fix escaped path decoding (#612)

v1.13.1 (2023-01-12)

Full Changelog

  • 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)

v1.13.0 (2022-12-10)

Full Changelog

  • 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)

v1.12.0

See https://github.com/ruby-git/ruby-git/releases/tag/v1.12.0

v1.11.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

v1.10.2

See https://github.com/ruby-git/ruby-git/releases/tag/v1.10.2

1.10.1

See https://github.com/ruby-git/ruby-git/releases/tag/v1.10.1

1.10.0

See https://github.com/ruby-git/ruby-git/releases/tag/v1.10.0

1.9.1

See https://github.com/ruby-git/ruby-git/releases/tag/v1.9.1

1.9.0

See https://github.com/ruby-git/ruby-git/releases/tag/v1.9.0

1.8.1

See https://github.com/ruby-git/ruby-git/releases/tag/v1.8.1

1.8.0

See https://github.com/ruby-git/ruby-git/releases/tag/v1.8.0

1.7.0

See https://github.com/ruby-git/ruby-git/releases/tag/v1.7.0

1.6.0

See https://github.com/ruby-git/ruby-git/releases/tag/v1.6.0

1.6.0.pre1

See https://github.com/ruby-git/ruby-git/releases/tag/v1.6.0.pre1

1.5.0

See https://github.com/ruby-git/ruby-git/releases/tag/v1.5.0

1.4.0

See https://github.com/ruby-git/ruby-git/releases/tag/v1.4.0

1.3.0

  • Dropping Ruby 1.8.x support

1.2.10

  • Adding Git::Diff.name_status
  • Checking and fixing encoding on commands output to prevent encoding errors afterwards

1.2.9

  • 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

1.2.8

  • 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

1.2.7

  • 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

1.2.6

  • 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

1.0.4

  • added camping/gitweb.rb frontend
  • added a number of speed-ups

1.0.3

  • 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

1.0.2

  • Added methods to the git objects that might be helpful

1.0.1

  • Initial version