Skip to content

Releases: thoughtbot/gitsh

gitsh v0.14

22 Mar 18:24
536b066
Compare
Choose a tag to compare

Dependencies

This version of gitsh requires:

  • Ruby v2.3 or greater (support for Ruby 2.0, 2.1, and 2.2 has been dropped).

New features

  • Support for gitsh-specific Readline configuration, using a $if gitsh … $endif block in your .inputrc.
  • Expand aliases in the background when tab completing, so that tab completion rules apply to aliases without any custom configuration.
  • Support for custom tab completion rules that use branch names and tag names, via the $branch and $tag variables.
  • Default tab completion rules updated to use branch and tag names where appropriate, e.g. branch -D <tab> will now complete branch names, but not other revisions like tags, etc.
  • Support for fallback tab completion rules that only apply to commands that don't have a more specific configuration, via the fallback:: modifier.
  • Default tab completion rules updated with fallback rules that roughly mirror gitsh's behaviour in version 0.12 and earlier (tab complete paths, revisions, and remotes as arguments to any command without specific configuration).
  • Report errors in tab completion config files on start up, instead of crashing when the user first tries to use tab completion.
  • Friendly error messages for common tab completion config file problems, including the file where the problem occurred, and the line and column numbers.

Bug fixes

  • Tab complete multiple revisions for git rebase, e.g. rebase master <tab> will complete revision names.
  • No longer crash when there's a tab completion configuration file with no rules.
  • No longer allow invalid tab completion configurations that would cause a crash, e.g. $opt in the definition of an option.

gitsh v0.13

11 Jan 16:49
a5fa158
Compare
Choose a tag to compare

New features

  • Expand ~ in the gitsh.historyFile setting (Cedric Staniewski)
  • Support %g and %G in the prompt format to show the current Git command (Ben Knoble)
  • Complete tab completion rewrite, replacing naive options with a context-aware system (George Brocklehurst & Eric Collins)
    • Tab complete the names of gitsh and git-config variables
    • Tab complete command options (e.g. push --force-<tab> expands to push --force-with-lease)
    • Tab complete more than one command on the same line (e.g. commit && pus --force-<tab>)
    • Define custom tab completion options for aliases and custom commands in a ~/.gitsh_completions file
  • Tab completion of commands is now compatible with Git 2.20 (George Brocklehurst)

Internals

  • Fix various Ruby warnings, and set up tools to prevent us introducing more (Teo Ljungberg)

gitsh v0.12

25 May 18:54
8a7b301
Compare
Choose a tag to compare

New features

  • Split commands over multiple lines, by escaping line breaks, or using line breaks after logical operators and within parentheses (George Brocklehurst)
  • Split arguments over multiple lines, by using line breaks inside quoted strings (George Brocklehurst)
  • Group commands with parentheses to override default operator precedence, e.g. (foo || bar) && baz (George Brocklehurst)
  • Use :cd with no arguments to change to the repository's root directory (George Brocklehurst)
  • New $_root magic variable, which evaluates to the repository's root directory (George Brocklehurst)
  • Use Git options directly, e.g. you can now type --version to see the version of Git you're using (George Brocklehurst)

Bug fixes

  • More robust subshell parsing, e.g. $(:echo ")") now works as expected (George Brocklehurst & Adam Sharp)
  • Catch parse errors in subshells earlier (George Brocklehurst & Adam Sharp)
  • Exit with a non-zero status when a non interactive session encounters a parse error (George Brocklehurst)

Internals

  • Complete parser re-write, replacing a Parslet PEG with an RLTK CFG (George Brocklehurst)

gitsh v0.11.2

19 Apr 22:44
b6201db
Compare
Choose a tag to compare

This release addresses issues with the install process that were introduced in v0.11, and by recent Homebrew changes.

Bug fixes

  • Support alternative names for GNU Readline, e.g. ereadline on OpenBSD (Mike Burns & George Brocklehurst)
  • Automatically discover Ruby binaries named ruby22, ruby23, and ruby24, e.g. for OpenBSD (George Brocklehurst)
  • Generate the list of files under lib/gitsh that need to be installed in a more portable way (Mike Burns & George Brocklehurst)
  • Support setting an explicit architecture for the Ruby C extension, which is useful for building against a macOS universal Ruby with a non-universal Readline (George Brocklehurst)
  • Update Homebrew formula to work with Homebrew's updated Readline formula (George Brocklehurst)

gitsh v0.11.1

30 Dec 23:41
2589bf4
Compare
Choose a tag to compare

This release addresses issues with the install process that were introduced in v0.11.

Bug fixes

  • Honour DESTDIR during make install (Tommaso Sardelli)

gitsh v0.11

22 Dec 17:38
a2632a4
Compare
Choose a tag to compare

Dependencies

This version of gitsh requires:

  • Ruby v2.0 or greater (1.9.3 was previously supported)
  • GNU Readline

New features

  • Execute shell commands via /bin/sh to gain support for shell features like globbing, e.g. !ls * will now behave as expected (George Brocklehurst & Mike Burns)
  • Don't create duplicate history entries when running the same command multiple times (Justin Moore & Calle Erlandsson)
  • Output a useful error message if gitsh can't find Git (Calle Erlandsson)
  • Abbreviate the user's home directory path as ~ when it's shown in the prompt (Scott Stevenson)
  • Use a custom C extension to integrate with GNU Readline. This avoids many tab completion issues libedit users have experienced, and paves the way for building more advanced tab completion schemes (George Brocklehurst)
  • Robust support for quoting and escaping, and for tab completing quoted and escaped arguments (George Brocklehurst)
  • Significant speed improvements when generating the prompt (Calle Erlandsson)

Bug fixes

  • A trailing semicolon on a command no longer causes a parse error (George Brocklehurst)

gitsh v0.10

11 Sep 15:53
6ca20a0
Compare
Choose a tag to compare

New features

  • :source file command to run the Git and gitsh commands in the given file (George Brocklehurst, Craig Kochis)
  • Subshells can be used to capture the output of a command, e.g. :set directory $(!pwd) (George Brocklehurst)
  • A ~/.gitshrc file is run at the start of each interactive session, if it exists (George Brocklehurst)

Bug fixes

  • Handle terminal resizes more reliable, especially those that occur while another program is running in gitsh, e.g. when a pager is running to display the output of git log (George Brocklehurst)
  • Output an error message instead of crashing when a magic variable has no value. (George Brocklehurst)
  • Exit with an error status when an unexpected exception crashes gitsh. (George Brocklehurst)

Maintenance

  • Upgrade testing tools to use the latest version of RSpec, and RSpec mocks instead of Mocha (Teo Ljungberg)

gitsh v0.9

15 Jan 20:42
27c88d4
Compare
Choose a tag to compare

New features

  • Ignore git at the start of commands when git's help.autocorrect setting is enabled (Rob Warner, George Brocklehurst)
  • Customise prompt colours by setting git config variables (George Brocklehurst)
  • Support Ruby binaries named ruby21, for improved compatibility with BSD (Mike Burns)
  • Improve install documentation (@lf-)
  • Support shortened branch names in the prompt format using %B (Saron Yitbarek, George Brocklehurst)

Behaviour changes

  • Consider unset variables to be an error, e.g. :echo $foo will fail with a helpful error message if $foo isn't set (George Brocklehurst, Harry Schwartz)
  • Switch the default prompt format from the full branch name to the short branch name (Saron Yitbarek, George Brocklehurst)

Bug fixes

  • Don't evaluate arguments until they are needs, which fixes commands like :set foo 1 && :echo $foo (George Brocklehurst)

gitsh v0.8

26 Sep 14:02
Compare
Choose a tag to compare

New features

  • Pass a script as a command line argument, or use gitsh as a sh-bang line (George Brocklehurst)
  • Pipe commands to the standard input (George Brocklehurst)
  • Magic variables: $_prior, $_rebase_base and $_merge_base (George Brocklehurst, Mike Burns)
  • Exit gitsh using :q (Jeff Mueller)
  • Comments at the end of other commands, e.g. add . # add all files (George Brocklehurst)
  • :help command to get help on internal commands (Sarah Mei, George Brocklehurst)

Bug fixes

  • Fix various bugs associated with window resizing (George Brocklehurst)
  • Improvements to the structure of the test suite (Sarah Mei, George Brocklehurst)

gitsh v0.7

13 Jun 14:21
Compare
Choose a tag to compare

New features

  • Always use an alternative Git binary like gh with the new gitsh.gitCommand setting (Calle Erlandsson, Magan Adam)
  • Commands that begin with # are treated as comments and ignored (George Brocklehurst, Anatoli Makarevich)
  • --version outputs which line editing library is being used: GNU Readline or libedit (Calle Erlandsson)
  • Some internal restructuring and tidying up (George Brocklehurst, Magan Adam)
  • A new gitsh binary written in C instead of Ruby, to prepare for gitsh scripts in a future release (George Brocklehurst, Calle Erlandsson)
  • Ignore unset variables instead of treating them as empty string, to mimic the behaviour of sh(1) (George Brocklehurst)

Bug fixes

  • The test suite runs under Ruby 2.1 (Calle Erlandsson)
  • Fixed missing directory error for first-time packagers (Gordon Fontenot)
  • Fix empty string arguments being passed to Git commands as if they were escaped (George Brocklehurst)
  • Lines that only contain spaces now execute the default command instead of causing a parse error (Alex Sunderland)
  • The process name is now gitsh instead of ruby in more contexts (George Brocklehurst, Calle Erlandsson)
  • Executing relative shell commands with ! no longer causes a parse error (Magan Adam, Calle Erlandsson)

Documentation

  • Added an installation guide to the tarball distribution, to help Linux users avoid common problems (George Brocklehurst)