Skip to content

Releases: carlfriedrich/forgit

25.01.0

01 Jan 00:20
df51911
Compare
Choose a tag to compare

Changes since 24.12.0:

  • chore: rename default branch (#410)
  • fix: fix edit file key binding (alt-e) in diff and add (#415)
    The key binding for editing a file in diff and add was not working
    properly on recent versions of fzf. As its documentation suggests, we
    should replace `execute-silent` with `execute` since we need to switch
    to a new screen and handle both input and output.

    fzf switches to the alternate screen when executing a command.
    However, if the command is expected to complete quickly, and you are
    not interested in its output, you might want to use execute-silent
    instead, which silently executes the command without the switching.

24.11.0

02 Nov 12:52
60b651d
Compare
Choose a tag to compare

Changes since 23.11.0:

  • Remove extraneous PATH export (#329)
  • README tweak: decrease level of headers (#337)
  • README: Add more explicit instructions for brew, fix headers for AUR, Fig (#339)
    Added more explicit instructions, now that I know how our brew installation process works.
    While I was there, I moved AUR and Fig to be subheaders of Installation
  • Add new workflow to update homebrew formula on release (#342)
  • fix: keep the script compatible with Busybox applets (#345)
    Use short flags for sort command
    Remove -n flag for nl command. The numbers in the selection list won't be aligned anymore, but no information is lost.
    The current arguments are only presented in GNU's coreutils.
  • fix: avoid polluting the global namespace (#347)
  • feat(completions): add completion for fish (#344)
    fish's builtin git completion automatically registers git-forgit completions as completions for forgit subcommand of git. Therefore this PR provides completions for both formats git-forgit and git forgit.
    Simple subcommands get the completion list from __fish_git_* functions, while others requiring more than 1 __fish_git_* completion sources reuse the completion items from the corresponding git commands.
  • fix(fish): clean up variables (#350)
    * use `status dirname` builtin to save 1 dirname call
    * use builtin test function instead of [ command
    * use local scoping for INSTALL_DIR variable (and make it lowercase to
    indicate such change)
    Ref: https://fishshell.com/docs/current/cmds/test.html
  • Consolidate zsh completions in one file (#340)
    Moved the completion definitions for zsh that previously were in completions/git-forgit.zsh and had to be sourced manually on shell startup into completions/_git-forgit, where they are automatically handled by compinit on shell startup. Sourcing a file to get completions is no longer necessary for zsh users.
    If you're having issues after updating, and completions for commands such as `forgit::add` or aliases like `ga` aren't working, remove your completions cache (~/.zcompdump) and restart your shell.
    Simplified _git-forgit to allow it to be called from within the completion script on the first run of a session.

    Co-authored-by: sandr01d [email protected]
  • chore(gha): Update actions/checkout from v3 to v4 (#351)
    Resolve deprecation warnings for GitHub actions, see https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/
  • [Fix diff preview and edit for files with a ']' character in their name (wfxr#354)](07f7e43)
    Our sed command for removing the short status (e.g. [M]) from gits
    output to extract the file name with _forgit_diff matched until the
    last ']' character in the line due to sed being greedy. This created
    issues with file names that contain a ']' character.
    To fix this, I made sure that only the short status is removed by sed,
    independently of the file name.
  • Fix homebrew update action to run on tag push (#356)
  • feat(fish): use abbr instead of alias (#348)
    Switch from aliases to abbreviations, as I suggested in
    feat(completions): add completion for fish wfxr#344 (comment)
    string collect returns 1 on empty argument, so it's used here to avoid repeating if else end blocks. Another benefit is that the output of string collect is ensured to be a single string. From string --help:
    string collect collects its input into a single output argument, without splitting the output when used in a command substitution. This is useful when trying to collect multiline output from another
    command into a variable. Exit status: 0 if any output argument is non-empty, or 1 otherwise.
    This PR is marked as breaking change, since abbr behaves differently from alias. It can only be used in the interactive command line (so putting exec glo into your scripts won't work).
  • Delete brew workflow (#360)
  • Fix issue where diff preview was broken on mac (#365)
    Closes wfxr#362
  • Refactor: Parse environment variables into arrays
    Forgit allows specifying git options in environment variables that are passed along to the individual git commands. We currently treat those as strings. This commit adds a _forgit_parse_array function and uses it to parse all such environment variables into arrays instead. This will allow us to get rid of deferred code, since we can pass the parsed arrays directly to the git commands and don't have to rely on eval.
  • Refactor: Replace deferred code used for fzf preview with functions
    Removes the deferred code that is used for creating the fzf preview functions and replaces it with _forgit_*_preview functions instead. These functions are exposed as forgit commands so they can be invoked from the fzf subshell. We split the exposed commands into public_commands and private_commands. The only difference between them is that public_commands are mentioned in the help text.
    This commit changes the flags variable in _forgit_blame from a string to an array. This is necessary to allow the flags to be passed to _forgit_blame_preview as individual arguments.
  • Refactor: Move git commands from deferred code into functions
    We often used deferred code to encapsulate git commands and make them
    reusable.
    This change removes deferred code for git commands and replaces it with
    functions instead.
    Some of the deferred code was used with xargs, which executes it on a
    subshell. To avoid having to expose the new git functions the same way
    we do with the preview functions, the usage of xargs in these cases is
    replaced with either a loop or a single command when possible.
  • Refactor: Replace _forgit_emojify deferred code variable with a function
    We used to have a variable that was either undefined or contained a
    piece of deferred code that piped input through emojify when present
    on the system. To remove the deferred code here, this commit
    replaces the _forgit_emojify variable with a function that either pipes
    the input through emojify or through cat, depending on whether emojify
    is present.
  • Refactor: Replace deferred git commands with regular git commands
    We were using deferred code in git commands in some places without any
    reason. Each of these deferred code snippets was only executed a
    single time, so we can replace them with regular git commands.
    This commit changes how we handle the FORGIT_LOG_GRAPH_ENABLE
    environment variable. We previously used a variable that stored the
    --graph flag as a string and unset it, when FORGIT_LOG_GRAPH_ENABLE
    was set to anything other than true. We now create an empty array and
    add the --graph flag to it when FORGIT_LOG_GRAPH_ENABLE is unset or true.
    Doing it this way allows us to build a command line without having to use
    eval. The outcome is the same as before.
  • Refactor: Replace deferred code in enter commands with functions
    In _forgit_log and _forgit_enter it is possible to diff a single
    commit/file by pressing enter. We used to store the code that executes
    the diffs in variables and passed it to fzf as deferred code. This
    refactor reduces the amount of deferred code by using functions instead
    of variables.
  • Refactor: Replace deferred code in edit commands with functions
    _forgit_diff and _forgit_add allow editing the currently previewed file
    in the EDITOR. This used to be handled entirely using deferred code.
    This commit replaces the deferred code and binds the commands to functions
    instead.
  • Refactor: Replace deferred code in yank commands with functions
    Many commands allow copying the commit hash or stash name of the current
    selection to the clipboard. We previously used deferred code to do so.
    This commit replaces the deferred code and binds these commands to
    functions instead.
  • [Refactor: Replace _forgit_extract_sha variable with function](htt...
Read more

23.11.0

01 Nov 00:17
48e91da
Compare
Choose a tag to compare

Changes since 23.09.0:

  • checkout_branch: support "-" argument (#322)
    git natively supports `-` as an argument to `git switch` and `git
    checkout`. It is shorthand for `@{-1}`, which is a way to refer to the
    last branch you were on.
    forgit used to interpret `-` as a branch name, detect that it does not
    exist yet and create a new one with this name, which does not work.
    Add a check whether `-` is passed on the command line and do not create
    a new branch in this case
  • Fixed opening files in the editor when a path contains spaces or a file was renamed (#323)
    Fixed two issues that occurred when trying to open files in the editor (ctrl+e). In both cases the wrong files were opened.
    1. Files that have spaces in their path. I fixed this by properly escaping the variables used in _forgit_diff() and forgit_add().
    2. When a tracked file was renamed and added, trying to open it in the editor from the diff view, would open a file with a name that consists of both, the old and the new name. I added a separate sed command that can handle this special case.

23.09.0

01 Sep 00:17
b663d22
Compare
Choose a tag to compare

Changes since 23.07.0:

23.07.0

01 Jul 00:23
665e3fd
Compare
Choose a tag to compare

Changes since 23.06.0:

23.06.0

01 Jun 00:23
f74aa93
Compare
Choose a tag to compare

Changes since 23.05.0:

23.05.0

01 May 00:18
3f00348
Compare
Choose a tag to compare

Changes since 23.02.0:

23.02.0

01 Feb 01:38
c098bf2
Compare
Choose a tag to compare

Changes since 23.01.0:

23.01.0

01 Jan 01:37
bfea8cf
Compare
Choose a tag to compare

Changes since 22.12.0:

22.10.0

23 Nov 17:52
49579b2
Compare
Choose a tag to compare

Initial release