Releases: git-town/git-town
v22.5.0
New Features
- The Git Town CLI can now embed breadcrumbs in proposals. This helps reviewers understand where a branch sits in a stack. Enable it via the new
proposal-breadcrumbsetting and choose betweenstacksorbranches(docs, #3003). - Added
git-town commit, a new command that lets you commit changes from your current branch directly into an ancestor branch and then syncs those changes back into your current branch. This makes it much easier to work on complex, cross-cutting changes in one place while committing each part to the correct branch in your stack (#5760).
Bug Fixes
- Fixed
git-town detachto correctly handle branches with multiple children (#5988). - Fixed
git-town propose --stackto properly sync branches before proposing (#5973).
Contribution branches
Huge thanks to @AlexanderCiridae, @JaredSharplin, @ceilfors, @cjol, @davidolrik, @haltcase, @kevgo, @meowsus, @mrmarufpro, @mw00120, @nemith, @oleg-codaio, @ruudk, @stephenwade, @towry, @tranhl, @yaadata, @zodman for contributing code, ideas, and feedback to 122 shipped pull requests and 5 resolved issues!
v22.4.0
New Features
syncnow has a--goneflag to only sync (i.e. remove) branches that have already been shipped or deleted on the remote. This provides a low-risk way to clean up obsolete local branches without configuring branch types or touching anything active (#5845).shipcan now ignore uncommitted changes via the new ignore-uncommitted configuration setting, making it easier to ship in messy working directories when you know what you're doing (#5837).propose --stacknow supports skipping branches where proposal creation fails instead of aborting by running git town skip (#5869).config --redactnow also obfuscates the configured user email in addition to other sensitive values (#5850).
Bug Fixes
- Improved handling of branches that exist across multiple Git remotes (#5838).
propose --stacknow skips branches where proposal creation failed but the proposal exists anyways (#5865).initnow correctly persists connector types to the config file (#5817).sync --allnow switches to a branch that is available in the worktree before deleting a shipped branch (#5847).
Contributors
Shoutout to @degauden, @kevgo, @meowsus, @pcfreak30, @stephenwade for contributing code, feedback, and ideas to 62 shipped pull requests and 7 resolved issues!
v22.3.0
New Features
- All Git Town commands now also show the negated forms of CLI flags in their help output, making it clearer how to disable options (#5814).
- Added a new branch-prefix config setting that automatically prepends a prefix to branches created by Git Town (#5677).
git town skipgained a--parkflag to permanently skip this branch (#5839).git town confignow supports a--redactflag that obfuscates sensitive configuration data like access tokens, making it safer to share configuration in bug reports (#5831).git town switchgained a--stashflag to explicitly disable stashing uncommitted changes (#5778).- You can now configure which browser Git Town opens via the new browser config setting. Previously this was only configurable through the
BROWSERenvironment variable (#5818). - A JSON Schema for the Git Town config file is now published on schemastore.org, enabling validation and editor autocompletion (#5703).
Bug Fixes
- Git Town now retries backend Git commands that fail due to concurrent Git usage (for example when your IDE races the CLI) (#5816).
- The setup assistant no longer deletes advanced configuration when running a quick setup (#5802).
- The setup assistant now reliably writes all config values to the config file (#5803).
git town syncnow switches to a local branch available in the current worktree before deleting the current branch (#5797).git town syncavoids phantom merge conflicts by no longer syncing with tracking branches of ancestors if their local branch is unavailable in the current worktree (#5791).git town hack --beamnow works correctly with worktrees and branches without an ancestor (#5690).git town sync --pruneno longer crashes when the current branch has already been shipped at the remote (#5704)git town walknow skips branches that aren't available in the current worktree (#5714).git town proposenow only opens proposals that are still active (#5745).- The
share-new-branchesconfig setting now accepts a wider range of values (#5719).
Contributors
Huge thanks to @erik-rw, @j2fw, @james-harlyy, @kevgo, @lukeramsden, @meowsus, @ruudk, @stephenwade, @yaadata for contributing code, ideas, and feedback to 130 merged pull requests and 19 resolved issues!
v22.2.0
New Features
- Git Town now supports a non-hidden config file, i.e.
git-town.toml, in addition to the existing config file names (#5614). - The new order configuration setting allows displaying lists of branches in reverse order, for example in switch, branch, up, down, and config. This is useful if you prefix your branches with the creation date like
YYYYMMand want to see the newest branches on top (#5615). - The new display-types configuration setting allows configuring which branch types Git Town shows in lists of branches. This affects the branch, switch, config, down, and up commands and all internal dialogs that ask to select a branch or parent branch (#5659).
- switch: you can now toggle to show all branches on and off using the
ahotkey (#5624). - setup assistant: now runs in the presence of invalid configuration data and overwrites it (#5598).
- Git Town now uses the Git user name also from the environment variables
GIT_AUTHOR_EMAIL,GIT_COMMITTER_EMAIL,GIT_AUTHOR_NAME, andGIT_COMMITTER_NAMEif they aren't set in Git metadatauser.emailanduser.name(#5668).
Bug Fixes
- compress: works if a folder has the same name as a branch (#5594).
- ship: works if a folder has the same name as a branch (#5657).
- set-parent: only changes commits of feature or prototype branches (#5605).
- propose: correctly passes on a
--bodytag without content (#5496). - propose: the
ghconnector no longer crashes if the user choosesContinue in browser(#5681). - sync: pruning a freshly created branch no longer crashes (#5660).
- hack: now always sets the correct branch type (#5609).
- hack:
--beamfrom a branch without parent now asks for the branch parent (#5121). - init: no longer crashes if if there are no remotes (#5608).
- switch: can now combine
--alland--display-types(#5648). - dead links on the "Contributing" tab on GitHub are fixed (#5679).
Contributors
Shoutout to @AmitJoki, @GamerGirlandCo, @Varedis, @caccavale, @derekspelledcorrectly, @j2fw, @james-harlyy, @kevgo, @kevinmichaelchen, @mrmarufpro, @nebbles, @ruudk, @stephenwade, @thattomperson, @tranhl, @tugrulates, @yaadata for contributing code, feedback, ideas, and bug fixes to 58 shipped pull requests and 24 resolved issues!
v22.1.0
New Features
- if you run a Git Town command while another is suspended, Git Town now offers the option to finish the suspended program and then run the new one (#3337).
Bug Fixes
- Fixes bugs resulting from the new Option serialization (#5623).
Contributors
Shoutout to @DPirate, @IGassmann, @Mause, @derekspelledcorrectly, @ethankeshishian, @kevgo, @stephenwade, @yaadata, @Shmookoff for contributing code, bug reports, and ideas to 24 shipped pull requests and 4 resolved issues!
v22.0.0
BREAKING CHANGES
- Renamed the
codebergconnector toforgejosince it supports all Forgejo-based forges. Codeberg itself runs on Forgejo (#5447). - Start the setup assistant with
git town initinstead ofgit town config setup, matching Git'sgit init(#5269). - git town hack no longer converts an existing branch into a feature branch. Use the new feature command instead (#5516).
- The
contribute,feature,observe,park, andprototypecommands no longer signal a problem when you run them on a branch that already has the desired type. - Removed the long-deprecated
killcommand. Use delete instead.
New Features
- Added support for Azure DevOps (#1657).
- Introduced the push-branches setting to control whether Git Town pushes local changes to tracking branches automatically. Disable it if you prefer to push manually (#5541).
- Introduced the auto-sync setting to control whether hack, append, and prepend sync existing branches before creating a new one (#5540).
set-parent: added the--noneflag to create perennial branches programmatically.
Bug Fixes
- Fixed
git town branchin repos with a detached HEAD (#5565).
Contributors
Shoutout to @Phunky, @alexus37, @aximut, @bb010g, @benmosher, @blaggacao, @charlierudolph, @derekspelledcorrectly, @kevgo, @kinyat, @maruffahmed, @oludaara, @pradeepmurugesan, @sheldonhull, @stefanfrede, @stephenwade, @vectro, @whitebear-gh, @yaadata for contributiong code, feedback, and ideas to 78 shipped pull requests and 12 resolved issues!
v21.5.0
New Features
-
Added up and down commands to quickly move to the child or parent of the current branch (#5432).
-
All configuration settings can now be provided via environment variables, in addition to the config file and Git metadata. This makes it easy to use custom scripts that provide configuration data (#5446). For example, to load an API token from 1password CLI:
GIT_TOWN_GITHUB_TOKEN=$(op read op://development/GitHub/credentials/personal_token) git town config -
The
hack,append, andprependcommands now support a stash flag and config option to leave staged changes as-is. Handy if you've carefully prepared an index you want to commit to a new branch (#5429). -
The setup assistant can now do a quick setup with only the essential settings (#5484).
-
Added a new
featurecommand to convert the given or current branch into a feature branch (#5376). -
The detached sync flag can now be permanently enabled through the new detached configuration setting (#5452).
-
The auto-resolve flag can now be disabled with
--no-auto-resolve(#5458).
Bug Fixes
- The setup assistant no longer stores a dev-remote when the user selects the default option (#5492).
Contributors
Shoutout to @fuadsaud, @kevgo, @stefanfrede, @stephenwade, @yaadata for contributing code, feedback, and ideas to 65 shipped PRs and 10 resolved issues!
v21.4.3
Bug Fixes
- Fewer phantom merge conflicts: Git Town now performs a rebase-onto only if there are actual commits to remove. If there are no commits to remove, Git Town performs a regular rebase, or if there is no need to sync, no rebase at all. (#5422)
- "git town branch" prints branches in other worktrees de-emphasized (#5405)
Contributors
Shoutout to @AmitJoki, @Ydot19, @avaz, @benmosher, @kevgo, @nebbles, @nekitk, @stephenwade, @tranhl for contributing feedback, ideas, and code to 47 shipped PRs and 3 resolved issues!