- 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