- added:
git machete git{hub,lab} update-{pr,mr}-descriptions
subcommands - added:
git machete gith{hub,lab} create-{pr,mr} --update-related-descriptions
flags - added:
git machete gith{hub,lab} restack-{pr,mr} --update-related-descriptions
flags - added:
git machete gith{hub,lab} retarget-{pr,mr} --update-related-descriptions
flags - 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
--debug
mode)
- changed: no longer publish RPM files with GitHub releases
- fixed: work around the parsing bug in
git patch-id
v2.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-unmanaged
uses the same algorithm asstatus
andtraverse
to recognize merged branches (suggested by @cinnamennen)
- added: git config keys
machete.github.prDescriptionIntroStyle
andmachete.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
diff
andlog
, for examplegit machete diff -- file.txt
,git machete log -- --patch
(partly contributed by @tdyas)
- added: git config key
http.sslVerify
is honored when connecting to GitHub and GitLab APIs (suggested by @scamden)
- fixed: avoid detecting a cycle when there's a PR/MR from
main
ormaster
in 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/machete
file suggests to usegit machete git{hub,lab} checkout-{prs,mrs}
- fixed: pass
-c log.showSignature=false
to allgit
invocations to hide GPG signatures in logs; iflog.showSignature
were set to a value equivalent totrue
in a user'sgit
configuration, the GPG signatures shown in logs would cause errors ingit log
andgit reflog
parsing 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-pr
andgit machete gitlab restack-mr
fail 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}
(status
andtraverse
) and git config keymachete.squashMergeDetection
(contributed by @gjulianm) - deprecated:
--no-detect-squash-merges
flag instatus
andtraverse
— use--squash-merge-detection=none
instead (contributed by @gjulianm)
- fixed:
-y
option ingit machete traverse
automatically sets--no-edit-merge
flag, to retain behavior when theupdate=merge
qualifier is set (contributed by @gjulianm) - fixed:
push=no
andslide-out=no
qualifiers now work ingit machete advance
now - fixed:
rebase=no
qualifier 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-mrs
flag - fixed: checking out GitHub PRs where head branch comes from an already deleted fork
- added: qualifier
update=merge
allows 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-child
flag togit machete add
(contributed by @matthalp) - fixed:
git machete github retarget-pr
not updating description of PR due to stray\r
characters
- 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-pr
in 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-pr
aborts with an error rather than falling into an infinite loop - fixed: when checking out longer PR chains,
git machete github checkout-prs
prints out all checked out branches correctly
- improved: if neither
.git/info/description
nor.github/pull_request_template.md
is present,git machete github create-pr
now uses message body of the first unique commit as PR description (suggested by @kamaradclimber) - added:
machete.github.forceDescriptionFromCommitMessage
git config key that forcesgit machete github create-pr
to use message body of the first unique commit as PR description (suggested by @kamaradclimber)
- fixed:
Cannot parse Link header
error ingit machete github
subcommands when there are more than 100 PRs in the given repository (reported by @domesticsimian) - fixed: if
.git/machete
doesn't exist,git machete add <branch>
adds both current branch and the newly-added<branch>
(not just the latter)
- added:
--removed-from-remote
flag togit machete slide-out
(contributed by @raylu) - added:
--title
flag togit machete github create-pr
that allows for setting PR title explicitly (suggested by @mjgigli) - added:
--with-urls
flag togit machete github anno-prs
andmachete.github.annotateWithUrls
git config key that allow for adding the URL of the PR to the annotations (contributed by @guyboltonking) - added:
--yes
flag togit machete github create-pr
so that the user isn't asked whether to push the branch (suggested by @mkondratek) - deprecated:
git machete clean
andgit machete github sync
; usegithub checkout-prs --mine
,delete-unmanaged
andslide-out --removed-from-remote
instead - fixed: PR author is now always added to annotation if different from current user (contributed by @guyboltonking)
- added:
git machete github create-pr
adds a comment linking the PR to its base PR;github retarget-pr
keeps 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 squash
against 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-pr
also checks for.github/pull_request_template.md
for description (contributed by @raylu)
- added: arm64 packages in Ubuntu PPA
- fixed: reading tokens from
~/.github-token
for 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
--debug
mode
- fixed:
machete.github.remote
git config key can be specified independently frommachete.github.organization
andmachete.github.repository
- added:
git machete completion bash|fish|zsh
command - fixed: multiple glitches in the existing bash/fish/zsh completions
- improved: layout of documentation at ReadTheDocs
- improved: replaced
definition file
withbranch layout file
across the docs
- fixed: building the package for Ubuntu PPA
- fixed:
fish
completion no longer prompts file names alongside commands/flags (contributed by @guyboltonking)
- fixed:
git machete github
not being able to retrieve token used bygh
forgh
version >= 2.31.0 (reported by @domesticsimian)
- fixed:
machete-post-slide-out
,machete-pre-rebase
andmachete-status-branch
hooks can now be executed on Windows - fixed: unstable behavior after
edit
option has been selected for interactively sliding out invalid branches - fixed: handling of HTTP redirects when
git machete github create-pr
andretarget-pr
act on a repository that has been renamed and/or moved - improved:
git machete github retarget-pr
now 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-script
used 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/foo
branch exists,git machete add foo
no longer falsely recognizesorigin/feature/foo
as a potential remote tracking branch forfoo
- fixed: on Windows, git-machete installed globally via
pip
no longer crashes onModuleNotFoundError
within 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-includes
togit push
alongside--force-with-lease
- added:
--ignore-if-missing
flag togit machete github retarget-pr
command - added:
--branch=<branch>
option togit machete github retarget-pr
command - fixed:
github anno-prs
no longer assumes that local branch and its remote counterpart share the same name - fixed:
git machete --help
displays 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
,update
etc. no longer fails when an effectively-empty commit (commit whose changes have already been applied in the given rebase) is encountered
- fixed:
advance
crashing when the current branch is untracked
- deprecated:
machete.overrideForkPoint.<branch>.whileDescendantOf
is no longer taken into account; it's still written, however, for compatibility reasons
- fixed: zsh shell completion for the
slide-out
command 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 machete
command prompts and outputs - added:
slide-out=no
branch 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=no
andrebase=no
branch qualifiers that control push and rebase behaviour ofgit machete traverse
- added:
machete.github.domain
config key to support GitHub Enterprise domains - added: support for per-domain entries in
~/.github-token
file - 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
.git
suffix - fixed:
git machete
now correctly displays only available commands (without help topics) - fixed:
git machete traverse -y -M
no longer exits with error - fixed:
git machete
commands 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 machete
command prompt withCtrl+D
- added: support for Python 3.11
- added: machete config key
machete.traverse.push
that controls default behavior oftraverse
command - improved: formatting of the
config
section in the sphinx documentation
- added:
git machete github retarget-pr
now 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 machete
commands 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-machete
is now available in homebrew core formulae; ifgit-machete
has already been installed from the tap on a given machine,brew
should 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 diff
now works as intended (runsgit diff
against 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 edit
accepts 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.remote
set to.
) - fixed: fork point incorrectly inferred when a branch has been pushed immediately after being created
- fixed: output of
help
no longer includes ANSI escape codes when stdout is not a terminal - fixed: all newlines are skipped from the output of
machete-status-branch
hook 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 machete
now correctly infers remote for fetching of branch when the branch is associated with more than one remote - fixed:
git machete github create-pr
andretarget-pr
now 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 config
help topic and sphinx documentation page for config keys and environment variables - added: boolean git config key
machete.worktree.useTopLevelMacheteFile
for switching the machete file location for worktrees: a single central.git/machete
for 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 diff
doesn'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.extraSpaceBeforeBranchName
that enable configurable rendering ofstatus
command - 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:
advance
command now also pushes the branch after the merge - fixed:
fork-point
no longer specially treats branches merged to its parent - fixed: color scheme on 8-color terminals
- added:
--all
,--mine
,--by
flags 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 clean
with--checkout-my-github-prs
flag and its equivalentgit machete github sync
- added:
--delete
flag togit machete slide-out
command 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-pr
takes the PR title from the first unique commit
- fixed: build process of Docker images
- added: extra options can be passed to the underlying
git rebase
viaGIT_MACHETE_REBASE_OPTS
env var (suggested by @kgadek)
- added:
gitmachete/git-machete
Docker image (contributed by @mohitsaxenaknoldus) - fixed: build process stability
- fixed: support for worktrees (reported by @kgadek)
- added:
t
alias fortraverse
command - fixed: remove underscore from
--start-from
flag fortraverse
subcommand
- added: new way of acquiring the github token (from
~/.github-token
) - fixed:
--fork-point
and--down-fork-point
options values have to be ancestor of the current branch - added: fish shell completions (contributed by @kgadek)
- fixed: wrong logo path in Snapcraft config
- added:
github
command withanno-prs
,checkout-prs
,create-pr
andretarget-pr
subcommands - 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:
show
can accept a target branch other than the current branch (contributed by @asford) - added:
--no-push
,--no-push-remote
,--push
and--push-untracked
flags intraverse
to 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
gh
orhub
if available
- improved:
slide-out
can 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 -l
now always displays an empty list of commits - improved:
status
andtraverse
by default also consider squash merges when checking if a branch is merged to parent (contributed by @asford) - added:
--no-detect-squash-merges
flag instatus
andtraverse
to fall back to strict merge detection
- fixed:
add
without--onto
crashing when the current branch is not managed - fixed: commit message and PR description for
NixOS/nixpkgs
- added:
--sync-github-prs
/-H
and--token
options toanno
- removed: support for Python 2
- removed: deprecated commands
infer
andprune-branches
- removed: standalone
format
command (help format
can be used instead)
- fixed: PyPI deployment (ensure Travis uses Python 3.x)
- added:
squash
command
- fixed: Docker image used to open a PR to nixpkgs
- improved: both
master
(ormain
) anddevelop
are 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:
discover
crashing if neither ofdevelop
andmaster
branches present and--roots
not provided - improved: consider
main
branch as a fixed root in discovery alongsidemaster
anddevelop
- changed:
develop
branch is taken as a fixed root indiscover
ifmaster
branch 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
anno
andshow
- 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:
addable
category oflist
- added:
advance
command - added:
machete-post-slide-out
hook - added: support for
GIT_MACHETE_EDITOR
env var - changed:
go root
no longer raises an error when the current branch is root - fixed:
show root
no longer raises an error when the current branch is root - fixed: Bash completion for
-y
option in several commands - fixed: handling the case of current directory becoming non-existent (e.g. as a result of checkout)
- improved:
add
accepts remote branches as well (just likegit checkout
) - improved:
discover
limited to ca. 10 most recently checked out branches by default - improved:
discover
skips merged branches for which no child branches have been inferred - improved: release process has been simplified
- added:
--as-root
option toadd
- added:
--branch
option toanno
- added:
is-managed
plumbing command - added:
current
subcommand 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
strict
toclassic
- changed: Docker images moved from under
virtuslab
organization togitmachete
- changed:
apt-ppa
in all contexts todeb-ppa
- improved: determining the default editor (also including
git config core.editor
,$GIT_EDITOR
,editor
and$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:
traverse
suggests 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
traverse
in 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 push
fails forrpm
orapt-ppa-upload
services - fixed: deployment condition for
rpm
- added:
--yes
flag toadd
- added:
--yes
flag todelete-unmanaged
- added:
--yes
flag todiscover
- added:
--no-interactive-rebase
flag toreapply
- added:
--no-interactive-rebase
flag toslide-out
- added:
--fetch
,--no-interactive-rebase
,--return-to
,--start-from
,--whole
,--yes
flags totraverse
- added:
--no-interactive-rebase
flag toupdate
- added: fork point override feature via
--inferred
,--override-to
,--override-to-inferred
,--override-to-parent
and--unset-override
options offork-point
- added:
with-overridden-fork-point
category oflist
- added: detection of an ongoing am session, cherry pick, merge, rebase or revert
- fixed:
traverse
used 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
--merge
and--no-edit-merge
flags ofslide-out
,traverse
andupdate
- added:
version
command - fixed: in case the current branch is unmanaged,
go last
goes to the last branch under the last root and not to the last branch under the first root - fixed: zsh completion for
add
ands
- improved: testing against multiple git versions in CI pipeline
- improved: functional tests invoke
discover
andtraverse
- fixed: command-line argument validation for
list
- added:
--list-commits-with-hashes
flag 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
--debug
mode - improved: simplified the sample
machete-status-branch
hook (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 --version
are 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-branch
hook now receivesASCII_ONLY
env var depending on whetherstatus
runs 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-since
was crashing for branches that weren't referenced anywhere ingit reflog HEAD
- fixed:
discover --checked-out-since
was not taking some recently checked out branches into account - fixed: branches could have been confused with identically named files by underlying
git reflog
invocations - fixed: shellcheck has been applied on sample hook scripts
- improved: use
[y]es/[e]dit/[N]o
rather thany[es]/e[dit]/N[o]
format in CLI prompts - improved: underlying
git push
invocations are now using safer--force-with-lease
rather than--force
- improved: log exit code, stdout and stderr of
machete-status-branch
hook in case exit code is non-zero
- fixed: remote tracking branches were not always properly updated during
traverse
- added:
status
displays a message if there are no managed branches - fixed:
edit
was crashing when bothEDITOR
variable andvim
are 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-since
flag todiscover
- improved:
go root
,go first
andgo last
assume 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:
--color
flag tostatus
- changed:
file
displays absolute path
- changed: enable execution under both Python 2.7 and Python 3
- added: handling of
machete-pre-rebase
andmachete-status-branch
hooks + hook samples - added:
yq
(yes-and-quit) choice intraverse
- added:
-r
/--roots
option todiscover
- improved: fork point commit is highlighted in
status --list-commits
in case of a yellow edge - optimized: fetching state of the repository via git commands (esp.
config
,for-each-ref
,merge-base
,reflog
andrev-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-ref
format 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),
traverse
suggests 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 push
implicitly pickingorigin
as 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:
--debug
flag - added:
delete-unmanaged
is the new name forprune-branches
subcommand - deprecated:
prune-branches
subcommand (retained for backward compatibility) - added: ISSUE_TEMPLATE.md
- fixed: behavior of
discover
in 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
help
subcommand, esp. when run for an alias
- added:
discover
is the new name forinfer
subcommand - added:
l
is an alias forlog
- deprecated:
infer
subcommand (retained for backward compatibility) - improved: README
- improved:
infer
now works faster for large repositories
- fixed: corner cases in algorithm for computing fork point of a given branch
- fixed:
prune-branches
crashing when deleting a branch merged to HEAD but not to its remote tracking branch
- improved:
status
now 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 up
andupdate
use inferred parent branch if the current branch isn't managed
- added:
log
subcommand
- added:
first
andlast
params togo
andshow
subcommands
- fixed: some initial
git
commands were skipped from logs when--verbose
flag was passed - fixed: faster validation of branches included in the definition file
- fixed: Makefile commands for install/uninstall
- added:
anno
subcommand
- fixed:
prune-branches
crashing when the currently checked-out branch was unmanaged
- added:
infer
subcommand - added:
show
subcommand - added:
list
subcommand has new categoryslidable-after
- improved:
add
subcommand 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
/up
subcommands - removed:
-r
/--remote
option tostatus
andtraverse
subcommands
- improved: branch name completion in shell
- added:
list
subcommand (mostly for internal use of branch name completion)
- added:
traverse
subcommand 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-point
andreapply
commands
- fixed: some
git machete
subcommands crashing when run from within a submodule
- fixed: some
git machete
subcommands crashing when run during an ongoing merge or rebase