- fixed:
git machete go,slide-outand{github,gitlab} checkout-{pr,mr}snow fail with an actionable error when the target branch is already checked out in another worktree, rather than the crypticfatal: '<branch>' is already used by worktree at <path>fromgit checkout(reported by @lsierant)
- added: an Agent Skill at
skills/git-machete/SKILL.md - added:
git machete rename <new-name>command to rename a branch both in git and in the branch layout file - added:
git machete fork-point --explainflag explains which branches the fork point was inferred from - changed:
git machete github update-pr-descriptionsandgit machete gitlab update-mr-descriptionsnow default to--relatedwhen no flag (--all/--by/--mine/--related) is provided - changed:
git machete status -lnow lists, for green and yellow edges, all commits between the parent branch and the branch tip (rather than just between the fork point and the branch tip), with the fork point commit annotated-> fork point; red edges still list only the unique commits of the branch (fork-point..branch, exclusive) - fixed: spurious yellow edge no longer appears in
statuswhen the parent branch is merely behind its remote counterpart and the child branch was forked from the remote tip - fixed:
git machete slide-out <branch>no longer prints a confusing "Warning: sliding invalid branch ... out" followed by "Branch ... not found in the tree" when the branch was already deleted from git; the explicit slide-out is now honored cleanly - fixed:
git machete traverseno longer crashes withNotADirectoryError: '.git/machete'when auto-slide-out fires inside a linked worktree (reported by @BertPluymersTR) - fixed: minor glitches in shell completions
- fixed: parsing of
gh --versionoutput for custom/develghbuilds (e.g.gh version 2.92.0-7-ga3efb25a) - improved: CLI error messages now suggest close matches for typo'd subcommands, flags and choices
- fixed: ASCII-only mode is now applied separately for stdout and stderr so that stderr retains formatting when stdout is redirected (contributed by @tmchow)
- improved: bash, zsh and fish completion scripts now consistently filter out mutually exclusive options (contributed by @CodeLine9)
- added:
cd-into-temporary-worktreevalue formachete.traverse.whenBranchNotCheckedOutInAnyWorktreegit config key (suggested by @andrii0lomakin) - changed: when a branch is behind remote (needs a pull),
git machete traversenow skips rebase, just as it did already when branch is diverged from & older than remote (suggested by @lsierant) - fixed: when
git machete traversefailed on a rebase within a worktree, in certain cases the warning message about changed directory didn't show up (reported by @lsierant)
- improved: interactive
git machete godisplays a branch layout as instatus - fixed: interactive
git machete gonow fails immediately when stdout is not a TTY (e.g. when piped) instead of behaving chaotically - improved: user-facing messages in
go,show,traversefor the case of single root (contributed by @mvanhorn)
- changed: whenever git-machete prints a path on Windows, the path is now POSIX-compatible (with
/) - fixed: suggested
updatecommand in deprecation message forfork-point --override-to=...and--override-to-inferred - fixed: subtle bugs related to relative main/git directory paths when switching worktrees in
traverse - improved:
git merge-baseresults are written into.git/machete-merge-base-cachefor faster retrieval in large repositories
- added:
machete.traverse.whenBranchNotCheckedOutInAnyWorktreegit config key to control the behavior when checking out a branch that is not checked out in any worktree (suggested by @a-harhar) - changed:
github update-pr-descriptions --related,gitlab update-mr-descriptions --related, and all subcommands with-U/--update-related-descriptionsflag now always update the entire stack (both upstream and downstream PRs/MRs); the description style still respects themachete.github.prDescriptionIntroStyleormachete.gitlab.mrDescriptionIntroStyleconfig setting - fixed:
go first,go last,go rootno longer fail when run in detached HEAD state; instead, a sensible default is selected - fixed:
go(interactive mode) no longer fails when run in detached HEAD state; the interface is shown as usual - improved:
advancenow only suggests push when the branch is ahead of remote; for other sync-to-remote statuses (behind, diverged, in sync, untracked), a warning is displayed instead - improved: every time a branch is checked out, a
Checking out <branch>... OKmessage is printed out for consistency
- added: a GitHub-viewable tutorial under
docs/tutorial(suggested by @joeprivett) - fixed: Nix builds (reported by @ivanopagano)
- added: interactive terminal interface for checking out a branch, via
git machete go(without a direction) - added:
--no-rebaseflag toslide-outcommand to skip rebasing downstream branches after sliding out - changed: root branches (branches without an upstream) can now be slid out; their children become new root branches
- fixed:
-yshort option now works forgithub create-prandgitlab create-mrcommands (previously only--yeswas accepted)
- improved:
traversenow changes directory to the worktree where a branch is checked out, rather than failing (suggested by @lsierant) - fixed: use
simple(rather thannone) mode of squash merge detection ingit machete discover, to keep parity with the IntelliJ plugin
- added: support for Python 3.14 (earlier versions of git-machete should also work on Python 3.14)
- fixed: update
glabCLI output parsing to support the latest PAT format and auth status output format (contributed by @max-nicholson) - fixed:
fishcompletion for long options with an argument - added:
--stop-afterflag totraverseto stop the traversal after processing the specified branch (suggested by @chriscz) - added:
--start-fromflag oftraversenow accepts branch names in addition to special valueshere,root,first-root(suggested by @chriscz) - improved:
--start-fromand--return-toflags oftraversealso accept uppercase values likeHEREorSTAY - improved: also recognize
.github/PULL_REQUEST_TEMPLATE(without.md) as a PR description path
- fixed: git-machete no longer crashing when branch name contains a
@(reported by @brandtdaniels) - improved: more GitHub PR description template files are recognized (like
.github/PULL_REQUEST_TEMPLATE.mdordocs/pull_request_template.md)
- added: release of git-machete snap to arm64 (requested by @jeff-scifin)
- improved: formatting of the output of
git machete ... --helpandgit machete help ... - fixed:
git machete -v(no command) crashing - fixed: leading and trailing whitespace is now ignored in all interactive input
- fixed: incorrect
Could not determine base branch for PRerror messages when creating PRs fromgit machete traverse -H - fixed:
git bisectis recognized as a separate repository state bygit machete statusand side-effecting operations - fixed: branches marked as
slide-out=noare no longer slid out bygit machete slide-out --removed-from-remote - fixed: if current branch hasn't been slid out, then
git machete slide-outno longer switches the current branch
- deprecated:
git machete fork-point --override-to=...and--override-to-inferredoptions; use--override-to-parent, or rungit machete update [--fork-point=...]instead
- fixed:
git machete git{hub,lab} update-{pr,mr}-descriptions --relatedcould not update the current PR/MR in default intro style
- added:
git machete traverse --sync-github-prs/--sync-gitlab-mrssuggests creating PRs/MRs for branches without one (suggested by @bradneuman and @tir38)
- fixed:
yqanswer to retargeting a PR/MR intraversewas treated just asy/yes(no quitting)
- added: new
full-no-branchesandup-only-no-branchesvalues tomachete.github.prDescriptionIntroStyleandmachete.gitlab.mrDescriptionIntroStylegit config keys - fixed: preserve trailing lines when updating PR/MR descriptions
- fixed: generated sections of GitLab MRs include MR titles (as in GitHub PRs)
- added:
--by=...flag togit machete git{hub,lab} update-{pr,mr}-descriptions
- fixed:
git machete githubandgitlabrecognize SSH URLs with any user before@, not justgit
- added: flags
-H/--sync-github-prsand-L/--sync-gitlab-mrstotraverseto suggest retargeting PRs/MRs when traversing (suggested by @chriscz) - removed: no longer release new packages to Ubuntu PPA
- fixed: AUR package installation (reported by @jan-san)
- added:
git machete git{hub,lab} update-{pr,mr}-descriptionssubcommands - added:
git machete git{hub,lab} create-{pr,mr} --update-related-descriptionsflags - added:
git machete git{hub,lab} restack-{pr,mr} --update-related-descriptionsflags - added:
git machete git{hub,lab} retarget-{pr,mr} --update-related-descriptionsflags - added:
machete.traverse.fetch.<remote>git config key to selectively exclude remotes fromgit machete traverse --fetch(contributed by @gjulianm)
- added: support for Python 3.13 (earlier versions of git-machete should also work on Python 3.13 outside certain rare cases when in
--debugmode)
- changed: no longer publish RPM files with GitHub releases
- fixed: work around the parsing bug in
git patch-idv2.46.1 (reported by @ilai-deutel) - fixed:
git machete git{hub,lab} create-{pr,mr}takes into account<!-- {start,end} git-machete generated -->in PR/MR template (suggested by @frank-west-iii)
- changed: no longer publish Docker images
- improved:
git-machete delete-unmanageduses the same algorithm asstatusandtraverseto recognize merged branches (suggested by @cinnamennen)
- added: git config keys
machete.github.prDescriptionIntroStyleandmachete.gitlab.mrDescriptionIntroStyle - added: ability to turn off PR/MR description intro completely by setting the git config key to
none(suggested by @tir38) - added: ability to include downstream PRs/MRs in PR/MR description intro by setting the git config key to
full(suggested by @aouaki) - changed: layout and ordering of PRs/MRs in PR/MR description intro to better match
git machete status
- added: ability to specify pass-through flags in
diffandlog, for examplegit machete diff -- file.txt,git machete log -- --patch(partly contributed by @tdyas)
- added: git config key
http.sslVerifyis honored when connecting to GitHub and GitLab APIs (suggested by @scamden)
- fixed: avoid detecting a cycle when there's a PR/MR from
mainormasterin a fork to the original repo (reported by @Joibel) - fixed:
git machete git{hub,lab} create-{pr,mr}no longer fails when creating a PR/MR across forks; instead, a forked PR is created (reported by @cspotcode) - improved:
git machete git{hub,lab} checkout-{prs,mrs}only adds annotations to affected branches (and not to every branch)
- improved: performance of listing commits for red-edge branches on large repos
- improved: message in case of missing
.git/machetefile suggests to usegit machete git{hub,lab} checkout-{prs,mrs} - fixed: pass
-c log.showSignature=falseto allgitinvocations to hide GPG signatures in logs; iflog.showSignaturewere set to a value equivalent totruein a user'sgitconfiguration, the GPG signatures shown in logs would cause errors ingit logandgit reflogparsing internal togit machete(reported and contributed by @goxberry)
- fixed: parsing of multiline git config keys (reported by @saveman71)
- fixed: readability of autogenerated PR/MR descriptions
- improved:
git machete github restack-prandgit machete gitlab restack-mrfail on branches marked aspush=no, instead of printing a warning and proceeding with retargeting anyway
- added: better detection of squash merges and rebases, controlled by flag
--squash-merge-detection={none,simple,exact}(statusandtraverse) and git config keymachete.squashMergeDetection(contributed by @gjulianm) - deprecated:
--no-detect-squash-mergesflag instatusandtraverse— use--squash-merge-detection=noneinstead (contributed by @gjulianm)
- fixed:
-yoption ingit machete traverseautomatically sets--no-edit-mergeflag, to retain behavior when theupdate=mergequalifier is set (contributed by @gjulianm) - fixed:
push=noandslide-out=noqualifiers now work ingit machete advancenow - fixed:
rebase=noqualifier now works ingit machete slide-out - improved: in
git machete github create-pr/gitlab create-mr, check whether base/target branch for PR/MR exists in remote, instead of fetching the entire remote
- fixed: Homebrew deploys
- fixed:
git machete git{hub,lab} restack-{pr,mr}now first retargets, then pushes (so that certain CIs see the correct base branch in env vars)
- added: GitLab support via
git machete gitlab(first suggested by @mikeynap, partly contributed by @max-nicholson) - added:
git machete anno -L/--sync-gitlab-mrsflag - fixed: checking out GitHub PRs where head branch comes from an already deleted fork
- added: qualifier
update=mergeallows selecting merge strategy per branch (contributed by @gjulianm) - added: Scoop package for Windows (suggested by @ppasieka)
- fixed: automatic updates of Homebrew formula
- fixed: deployment issues
- added:
-f/--as-first-childflag togit machete add(contributed by @matthalp) - fixed:
git machete github retarget-prnot updating description of PR due to stray\rcharacters
- fixed: make fork-point also take into account common ancestors (and not only reflogs) in more cases
- fixed: if a PR has a pre-v3.23.0
Based on PR #...header, then it's removed bygit machete github retarget-prin favor of the new extended PR chain
- added: full chain of PRs (and not just a link to the base PR) is added to/updated in PR description by
git machete github create-pr/retarget-pr/restack-pr(suggested by @mjgigli) - fixed: in the unlikely case of a cycle between GitHub PRs,
git machete github checkout-praborts with an error rather than falling into an infinite loop - fixed: when checking out longer PR chains,
git machete github checkout-prsprints out all checked out branches correctly
- improved: if neither
.git/info/descriptionnor.github/pull_request_template.mdis present,git machete github create-prnow uses message body of the first unique commit as PR description (suggested by @kamaradclimber) - added:
machete.github.forceDescriptionFromCommitMessagegit config key that forcesgit machete github create-prto use message body of the first unique commit as PR description (suggested by @kamaradclimber)
- fixed:
Cannot parse Link headererror ingit machete githubsubcommands when there are more than 100 PRs in the given repository (reported by @domesticsimian) - fixed: if
.git/machetedoesn't exist,git machete add <branch>adds both current branch and the newly-added<branch>(not just the latter)
- added:
--removed-from-remoteflag togit machete slide-out(contributed by @raylu) - added:
--titleflag togit machete github create-prthat allows for setting PR title explicitly (suggested by @mjgigli) - added:
--with-urlsflag togit machete github anno-prsandmachete.github.annotateWithUrlsgit config key that allow for adding the URL of the PR to the annotations (contributed by @guyboltonking) - added:
--yesflag togit machete github create-prso that the user isn't asked whether to push the branch (suggested by @mkondratek) - deprecated:
git machete cleanandgit machete github sync; usegithub checkout-prs --mine,delete-unmanagedandslide-out --removed-from-remoteinstead - fixed: PR author is now always added to annotation if different from current user (contributed by @guyboltonking)
- added:
git machete github create-pradds a comment linking the PR to its base PR;github retarget-prkeeps that comment up to date (suggested by @guyboltonking) - added: new subcommand
git machete github restack-pr, which (force-)pushes and retargets the PR, without adding code owners as reviewers in the process (suggested by @raylu) - improved: when running
git machete squashagainst a root branch, the error message suggests using--fork-point=...flag (suggested by @levinotik) - improved: simplified & clarified docs in multiple places (partly suggested by @kgadek)
- added: support for Python 3.12
- improved:
git machete github create-pralso checks for.github/pull_request_template.mdfor description (contributed by @raylu)
- added: arm64 packages in Ubuntu PPA
- fixed: reading tokens from
~/.github-tokenfor GitHub Enterprise domains (reported by @mkondratek) - fixed:
git machete github retarget-pr, when invoked without--ignore-if-missing, actually fails now if there is no PR for the branch - improved: GitHub tokens are automatically redacted from command outputs in
--debugmode
- fixed:
machete.github.remotegit config key can be specified independently frommachete.github.organizationandmachete.github.repository
- added:
git machete completion bash|fish|zshcommand - fixed: multiple glitches in the existing bash/fish/zsh completions
- improved: layout of documentation at ReadTheDocs
- improved: replaced
definition filewithbranch layout fileacross the docs
- fixed: building the package for Ubuntu PPA
- fixed:
fishcompletion no longer prompts file names alongside commands/flags (contributed by @guyboltonking)
- fixed:
git machete githubnot being able to retrieve token used byghforghversion >= 2.31.0 (reported by @domesticsimian)
- fixed:
machete-post-slide-out,machete-pre-rebaseandmachete-status-branchhooks can now be executed on Windows - fixed: unstable behavior after
editoption has been selected for interactively sliding out invalid branches - fixed: handling of HTTP redirects when
git machete github create-prandretarget-pract on a repository that has been renamed and/or moved - improved:
git machete github retarget-prnow fails if there are multiple PR with the given head branch (rather than silently take the first of them into account)
- fixed: building the docs for readthedocs.org
- fixed: building the package for Arch User Repository (reported by @chrislea)
- fixed:
.git/rebase-merge/author-scriptused to be rewritten to CRLF newlines on Windows, breaking the rebases (reported by @cspotcode)
- fixed: building the package for Alpine Linux (contributed by @Ikke)
- fixed: when
origin/feature/foobranch exists,git machete add foono longer falsely recognizesorigin/feature/fooas a potential remote tracking branch forfoo - fixed: on Windows, git-machete installed globally via
pipno longer crashes onModuleNotFoundErrorwithin venvs (contributed by @cspotcode)
- fixed: in the rare case when overridden fork point for branch X is an ancestor of X's parent, the effective fork point is selected to the latest common ancestor of X and X's parent
- improved: if git >= 2.30.0, pass
--force-if-includestogit pushalongside--force-with-lease
- added:
--ignore-if-missingflag togit machete github retarget-prcommand - added:
--branch=<branch>option togit machete github retarget-prcommand - fixed:
github anno-prsno longer assumes that local branch and its remote counterpart share the same name - fixed:
git machete --helpdisplays a man page (instead of crashing withNo manual entry for git-machete) when git-machete is installed via Homebrew
- fixed: a few glitches in the animated gif in README
- fixed: interactive rebase triggered by
traverse,updateetc. no longer fails when an effectively-empty commit (commit whose changes have already been applied in the given rebase) is encountered
- fixed:
advancecrashing when the current branch is untracked
- deprecated:
machete.overrideForkPoint.<branch>.whileDescendantOfis no longer taken into account; it's still written, however, for compatibility reasons
- fixed: zsh shell completion for the
slide-outcommand no longer fails - fixed: GitHub token retrieval logic
- fixed: in case of red edge, the unique history of a branch never includes commits reachable from its parent
- improved: formatting in
git machetecommand prompts and outputs - added:
slide-out=nobranch qualifier that controls the slide-out behaviour ofgit machete traverse
- improved: docs for
machete.github.*and other config keys
- fixed: superfluous whitespace around fork point hint in
status
- fixed: URL prefix for GitHub Enterprise API endpoints
- added:
push=noandrebase=nobranch qualifiers that control push and rebase behaviour ofgit machete traverse - added:
machete.github.domainconfig key to support GitHub Enterprise domains - added: support for per-domain entries in
~/.github-tokenfile - fixed: fetching GitHub PRs when there is more than 30 of them in the given repository
- fixed: shell completions suggest
t(alias fortraverse) as a valid command
- fixed: redo the failed release
- fixed: support GitHub remote URLs without
.gitsuffix - fixed:
git machetenow correctly displays only available commands (without help topics) - fixed:
git machete traverse -y -Mno longer exits with error - fixed:
git machetecommands no longer exit with stack trace when interrupted by Ctrl+C
- improved: modify formatting of command line documentation
- added:
git machete help <command>now accepts command aliases - fixed: removed stack trace when terminating
git machetecommand prompt withCtrl+D - added: support for Python 3.11
- added: machete config key
machete.traverse.pushthat controls default behavior oftraversecommand - improved: formatting of the
configsection in the sphinx documentation
- added:
git machete github retarget-prnow updates annotation for the branch associated with the retargeted PR - improved: modify formatting in error message for
github create-pr - fixed: modify formatting of
git machetecommands output - improved: the .gif file in the README.md file has been slowed down to provide a better viewing experience
- fixed: Homebrew release process
- fixed: release instructions in CONTRIBUTING.md are now correct
- fixed: release to Homebrew doesn't crash the deployment process
- added:
git-macheteis now available in homebrew core formulae; ifgit-machetehas already been installed from the tap on a given machine,brewshould automatically pull new updates from homebrew core from now on - fixed: fork-point overridden with commit hash that no longer exists is ignored (doesn't crash git-machete anymore)
- fixed: removed redundant files from Ubuntu package
- fixed: fork-point overridden with invalid commit hash is ignored (doesn't crash git-machete anymore)
- fixed:
git machete diffnow works as intended (runsgit diffagainst the current working directory, not the current branch)
- added: subcommand
git machete list childless
- added: package for Ubuntu 22.04 LTS
- fixed: spurious failures in the build of Debian packages
- fixed:
git machete editaccepts arguments (and not only executable path/name) in the editor pointed by git config or environment variable
- fixed: git-machete crashing when a local branch uses another local branch as its remote tracking branch (
git config branch.BRANCH.remoteset to.) - fixed: fork point incorrectly inferred when a branch has been pushed immediately after being created
- fixed: output of
helpno longer includes ANSI escape codes when stdout is not a terminal - fixed: all newlines are skipped from the output of
machete-status-branchhook to avoid messing up the rendered status
- added: support GitHub remote URL in the form of
https://USERNAME@github.com/ORGANIZATION/REPOSITORY.git
- fixed:
git machetenow correctly infers remote for fetching of branch when the branch is associated with more than one remote - fixed:
git machete github create-prandretarget-prnow take branch tracking data into account when finding out where (in what GitHub organization/repository) to create a PR
- fixed: release to Snap Store
- added:
git machete help confighelp topic and sphinx documentation page for config keys and environment variables - added: boolean git config key
machete.worktree.useTopLevelMacheteFilefor switching the machete file location for worktrees: a single central.git/machetefor all worktrees (as up to 3.10) or a per-worktree.git/worktrees/.../machete - added: when GitHub token is invalid/expired, provide information which token provider has been used
- added: support GitHub remote URL in the form of
ssh://git@github.com/USERNAME/REPOSITORY.git - fixed:
git machete diffdoesn't crash when supplied with a short branch name (e.g.develop) - fixed:
git machete {add, anno, diff, fork-point, is-managed, log, show}don't crash when supplied with a full branch name (e.g.refs/heads/develop)
- added: boolean git config key
machete.status.extraSpaceBeforeBranchNamethat enable configurable rendering ofstatuscommand - added: 3 git config keys
machete.github.{remote,organization,repository}that enablegit machete github *subcommands to work with custom GitHub URLs
- fixed: better rendering of edge junctions in
status
- added:
advancecommand now also pushes the branch after the merge - fixed:
fork-pointno longer specially treats branches merged to its parent - fixed: color scheme on 8-color terminals
- added:
--all,--mine,--byflags and parameter<PR-number-1> ... <PR-number-N>togit machete github checkout-prs - fixed: cherry-pick/merge/rebase/revert is detected on a per-worktree basis
- added: command
git machete cleanwith--checkout-my-github-prsflag and its equivalentgit machete github sync - added:
--deleteflag togit machete slide-outcommand for deleting slid-out branches from git
- fixed: package version retrieval outside of git repository
- fixed: checking whether a branch is merged to parent works for branches that have no common commit
- added: CI/CD check ensuring that RELEASE_NOTES are up to date
- fixed:
github create-prtakes the PR title from the first unique commit
- fixed: build process of Docker images
- added: extra options can be passed to the underlying
git rebaseviaGIT_MACHETE_REBASE_OPTSenv var (suggested by @kgadek)
- added:
gitmachete/git-macheteDocker image (contributed by @mohitsaxenaknoldus) - fixed: build process stability
- fixed: support for worktrees (reported by @kgadek)
- added:
talias fortraversecommand - fixed: remove underscore from
--start-fromflag fortraversesubcommand
- added: new way of acquiring the github token (from
~/.github-token) - fixed:
--fork-pointand--down-fork-pointoptions values have to be ancestor of the current branch - added: fish shell completions (contributed by @kgadek)
- fixed: wrong logo path in Snapcraft config
- added:
githubcommand withanno-prs,checkout-prs,create-prandretarget-prsubcommands - added: documentation on readthedocs.io
- fixed: documentation displayed with
help/-h/--help - improved: content of git-machete project related blogs has been moved to this repo and updated
- removed: releases to Nixpkgs no longer happen directly from our CI pipeline
- improved:
showcan accept a target branch other than the current branch (contributed by @asford) - added:
--no-push,--no-push-remote,--pushand--push-untrackedflags intraverseto optionally skip pushing to remote (contributed by @asford)
- fixed: newly created branches were sometimes incorrectly recognized as merged to parent
- improved: GitHub API token is resolved from
ghorhubif available
- improved:
slide-outcan target branches with any number of downstream (child) branches (contributed by @asford) - fixed: detection of no-op rebase cases in fork-point algorithm
- fixed: if a branch is merged to its parent,
git machete status -lnow always displays an empty list of commits - improved:
statusandtraverseby default also consider squash merges when checking if a branch is merged to parent (contributed by @asford) - added:
--no-detect-squash-mergesflag instatusandtraverseto fall back to strict merge detection
- fixed:
addwithout--ontocrashing when the current branch is not managed - fixed: commit message and PR description for
NixOS/nixpkgs
- added:
--sync-github-prs/-Hand--tokenoptions toanno
- removed: support for Python 2
- removed: deprecated commands
inferandprune-branches - removed: standalone
formatcommand (help formatcan be used instead)
- fixed: PyPI deployment (ensure Travis uses Python 3.x)
- added:
squashcommand
- fixed: Docker image used to open a PR to nixpkgs
- improved: both
master(ormain) anddevelopare automatically treated as roots indiscover
- fixed: Reset to Remote and Fast Forward actions in our IntelliJ Plugin caused fork point to be inferred incorrectly
- added: CI also runs tests against Python 3.9 and latest version of Git
- fixed:
discovercrashing if neither ofdevelopandmasterbranches present and--rootsnot provided - improved: consider
mainbranch as a fixed root in discovery alongsidemasteranddevelop
- changed:
developbranch is taken as a fixed root indiscoverifmasterbranch is missing
- improved: slide-out is suggested in certain contexts (like
status) in case a non-existent branch is found in .git/machete
- changed: skip verification of managed branches for
annoandshow - added: package for Ubuntu 20.04
- fixed: missing post-slide-out hook invocation after
advance
- fixed: working directory in release scripts
- fixed: release process for Homebrew and NixOS/nixpkgs
- added:
addablecategory oflist - added:
advancecommand - added:
machete-post-slide-outhook - added: support for
GIT_MACHETE_EDITORenv var - changed:
go rootno longer raises an error when the current branch is root - fixed:
show rootno longer raises an error when the current branch is root - fixed: Bash completion for
-yoption in several commands - fixed: handling the case of current directory becoming non-existent (e.g. as a result of checkout)
- improved:
addaccepts remote branches as well (just likegit checkout) - improved:
discoverlimited to ca. 10 most recently checked out branches by default - improved:
discoverskips merged branches for which no child branches have been inferred - improved: release process has been simplified
- added:
--as-rootoption toadd - added:
--branchoption toanno - added:
is-managedplumbing command - added:
currentsubcommand toshow - added: animated gif to README + script for generating gifs automatically
- improved: formatting of help, prompts, logs, warnings and other messages
- fixed: help for a few existing commands
- fixed: remove reviewer setting when opening a PR to NixOS/nixpkgs
- changed: confinement of snaps from
stricttoclassic - changed: Docker images moved from under
virtuslaborganization togitmachete - changed:
apt-ppain all contexts todeb-ppa - improved: determining the default editor (also including
git config core.editor,$GIT_EDITOR,editorand$VISUAL)
- fixed: build of rpm package
- improved: organization of deployment stages on CI
- added: automatic opening of a PR to NixOS/nixpkgs on each release
- improved:
traversesuggests to reset (git reset --keep) a local branch to its remote counterpart if the latter has newer commits - fixed: handling corner cases when figuring out fork point
- fixed: minor release-related issues
- fixed: interactive input for
traversein case of an untracked branch
- added: support for Snappy
- added: script for creating an annotated tag for release
- added: extra checks in CI
- added: release guidelines
- fixed: implementation of backup of .git/machete file in
discover
- fixed: deployment doesn't fail when
docker-compose pushfails forrpmorapt-ppa-uploadservices - fixed: deployment condition for
rpm
- added:
--yesflag toadd - added:
--yesflag todelete-unmanaged - added:
--yesflag todiscover - added:
--no-interactive-rebaseflag toreapply - added:
--no-interactive-rebaseflag toslide-out - added:
--fetch,--no-interactive-rebase,--return-to,--start-from,--whole,--yesflags totraverse - added:
--no-interactive-rebaseflag toupdate
- added: fork point override feature via
--inferred,--override-to,--override-to-inferred,--override-to-parentand--unset-overrideoptions offork-point - added:
with-overridden-fork-pointcategory oflist
- added: detection of an ongoing am session, cherry pick, merge, rebase or revert
- fixed:
traverseused to continue the walk when interactive rebase stopped foredit(rather than stop the traversal and allow for the actual edits)
- added: support for automated merging via
--mergeand--no-edit-mergeflags ofslide-out,traverseandupdate
- added:
versioncommand - fixed: in case the current branch is unmanaged,
go lastgoes to the last branch under the last root and not to the last branch under the first root - fixed: zsh completion for
addands - improved: testing against multiple git versions in CI pipeline
- improved: functional tests invoke
discoverandtraverse - fixed: command-line argument validation for
list - added:
--list-commits-with-hashesflag tostatus - improved: stability of loading branch data from git
- fixed: predictability of handling branch remote tracking data
- fixed: fork point algorithm is now more resilient to corner cases in reflogs
- added: RPM package build
- fixed: Debian package no longer depends on
python3-pkg-resources - fixed: tests are no longer included in sdist tarball
- removed: support for building with make
- fixed: missing Debian build dependency on
git - fixed: issue with
brew install(completion/ directory not being packaged into sdist)
- fixed: unpredictable behavior of
delete-unmanaged - fixed: build of Debian packages on PPA
- improved: logging output of external commands in
--debugmode - improved: simplified the sample
machete-status-branchhook (no git submodules involved) - improved: git-machete is compatible with git >= 2.0.0
- added: functional tests
- added: automatic push to brew tap repository
- added: automatic push to Ubuntu PPA
- fixed: trailing parts of the output of
git --versionare now removed
- improved: validation of generated Debian packages
- fixed: deployment to PyPI
- fixed: removed dependency on
distutils.spawn
- fixed: remove stray ANSI escape characters in ASCII-only mode
- improved:
machete-status-branchhook now receivesASCII_ONLYenv var depending on whetherstatusruns in ASCII-only mode - fixed: artifact upload to GitHub Releases
- added: creation and upload of Debian packages to GitHub Releases
- improved: build process
- fixed:
discover --checked-out-sincewas crashing for branches that weren't referenced anywhere ingit reflog HEAD - fixed:
discover --checked-out-sincewas not taking some recently checked out branches into account - fixed: branches could have been confused with identically named files by underlying
git refloginvocations - fixed: shellcheck has been applied on sample hook scripts
- improved: use
[y]es/[e]dit/[N]orather thany[es]/e[dit]/N[o]format in CLI prompts - improved: underlying
git pushinvocations are now using safer--force-with-leaserather than--force - improved: log exit code, stdout and stderr of
machete-status-branchhook in case exit code is non-zero
- fixed: remote tracking branches were not always properly updated during
traverse
- added:
statusdisplays a message if there are no managed branches - fixed:
editwas crashing when bothEDITORvariable andvimare missing - fixed: remote tracking branch is now inferred for a local branch if it's not explicitly set
- fixed: only managed branches are now considered when inferring an upstream to add a branch onto
- added:
--checked-out-sinceflag todiscover - improved:
go root,go firstandgo lastassume the first defined tree if the current branch is unmanaged
- improved: enabled installation via
pip install
- fixed: choose fork point of B to its upstream U if B is descendant of U, but computed fork point is not a descendant of U
- fixed: wrong spacing in
status
- added:
--colorflag tostatus
- changed:
filedisplays absolute path
- changed: enable execution under both Python 2.7 and Python 3
- added: handling of
machete-pre-rebaseandmachete-status-branchhooks + hook samples - added:
yq(yes-and-quit) choice intraverse - added:
-r/--rootsoption todiscover - improved: fork point commit is highlighted in
status --list-commitsin case of a yellow edge - optimized: fetching state of the repository via git commands (esp.
config,for-each-ref,merge-base,reflogandrev-parse) - added: new edge color in
status(grey) marks branches merged to their parents - improved: suggest sliding out branches merged to their parents during
traverse
- added: zsh completion
- changed:
%(refname:lstrip=2)to%(refname:strip=2)ingit for-each-refformat to make sure old versions of git work properly
- added: use project in python way and improve README
- fixed: fork point of a branch could be determined incorrectly when a no-op rebase has been performed on some other branch
- fixed: handle some extra cases happening when a tag named exactly as one of the managed branches exists in the repository
- improved: Bash completion for long options
- fixed: handle the cases when a tag named exactly as one of the managed branches exists in the repository
- fixed: handle the case when tracking information isn't set for a branch but the newly-chosen remote counterpart already exists (and thus a push with force or a pull might be needed)
- improved: for branches that are behind their upstream (merged to upstream),
traversesuggests to slide them out instead of rebase onto that upstream
- fixed: location of bash completion script on Mac OS
- improved: visibility (esp. of yellow and grey elements) on white terminal backgrounds
- improved: during
traverse, if there's a branch that's untracked, no longer rely ongit pushimplicitly pickingoriginas the default remote
- improved: fork-point algorithm and upstream inference algorithm taking into account reflogs of remote counterparts of local branches
- fixed: a newline character is automatically added at the end of .git/machete file
- improved: simplified the upstream inference algorithm (now more aligned with the fork-point algorithm)
- added:
--debugflag - added:
delete-unmanagedis the new name forprune-branchessubcommand - deprecated:
prune-branchessubcommand (retained for backward compatibility) - added: ISSUE_TEMPLATE.md
- fixed: behavior of
discoverin a repository where no local branches exist (e.g. a newly-created one)
- improved: fetching the list of local branches
- fixed: upstream inference crashing for branches whose reflog is empty (due to e.g. expiry)
- added: link to the new blog post in README.md
- fixed: various issues with
helpsubcommand, esp. when run for an alias
- added:
discoveris the new name forinfersubcommand - added:
lis an alias forlog - deprecated:
infersubcommand (retained for backward compatibility) - improved: README
- improved:
infernow works faster for large repositories
- fixed: corner cases in algorithm for computing fork point of a given branch
- fixed:
prune-branchescrashing when deleting a branch merged to HEAD but not to its remote tracking branch
- improved:
statusnow works faster for large repositories
- updated: repository url in README.md
- removed: unused install.sh script
- fixed: use apostrophes instead of backticks in user-facing messages to comply with git's conventions
- improved:
show up,go upandupdateuse inferred parent branch if the current branch isn't managed
- added:
logsubcommand
- added:
firstandlastparams togoandshowsubcommands
- fixed: some initial
gitcommands were skipped from logs when--verboseflag was passed - fixed: faster validation of branches included in the definition file
- fixed: Makefile commands for install/uninstall
- added:
annosubcommand
- fixed:
prune-branchescrashing when the currently checked-out branch was unmanaged
- added:
infersubcommand - added:
showsubcommand - added:
listsubcommand has new categoryslidable-after - improved:
addsubcommand behavior, including inference of desired upstream when possible - improved: remote sync-ness information displayed by
status(now corresponds to how git tracks remote counterparts) - removed:
down/next/prev/root/upsubcommands - removed:
-r/--remoteoption tostatusandtraversesubcommands
- improved: branch name completion in shell
- added:
listsubcommand (mostly for internal use of branch name completion)
- added:
traversesubcommand that semi-automatically syncs the entire branch dependency tree
- added: extra checks for indent errors in the definition file
- added: custom annotations (e.g. PR number) allowed next to branch name in the definition file
- changed: allow to specify multiple branches when doing a
slide-out
- changed: loosen requirements for
diff,fork-pointandreapplycommands
- fixed: some
git machetesubcommands crashing when run from within a submodule
- fixed: some
git machetesubcommands crashing when run during an ongoing merge or rebase