------------------------------------------------------------------- Mon Mar 02 06:31:01 UTC 2026 - Johannes Kastl - Update to version 22.6.0: * New Features - Added a new breadcrumb-direction preference that lets you control how Git Town renders breadcrumbs in proposals: either up or down from the root branch (#6024). - git town diff-parent now supports --name-only and --diff-filter, both passed straight through to the underlying git diff invocation. This makes it easier to narrow diffs in larger stacks (#6046). - The generated Git Town configuration file now contains a link to its JSON Schema. This unlocks IDE autocomplete and validation (#6058). - The setup assistant now creates an alias for git town continue (#6040). - --verbose output now redacts all tokens and secrets. You can now safely paste verbose logs into bug reports. To see actual tokens, run git town config (#6029). - The documentation now clarifies how to ship multiple branches from a stack without re-running CI between each one (#6031). * Bug Fixes - Fixed a crash when Git Town is invoked by AI agents in subshells without a TTY. We now detect missing TTYs and print clear, structured instructions describing the required inputs, readable by both humans and automation (#5995, #6051). - Git Town no longer adds breadcrumbs to proposals of observed and contribution branches. Breadcrumbs are now limited to branches that you own (#6056). - Forge connectors using gh and glab now log API activity in the terminal, matching the behavior of token-based connectors (#6057). - Fixed a crash when syncing branches that introduce the same file (#6045). - git town sync now runs correctly after a dry-run (#5944). - The glab connector now correctly lists merge requests (#6041). - git town sync --stack now updates proposals only for the branches that are actually being synced (#6021). ------------------------------------------------------------------- Tue Jan 27 06:07:33 UTC 2026 - Johannes Kastl - Update to version 22.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-breadcrumb setting and choose between stacks or branches (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 detach to correctly handle branches with multiple children (#5988). - Fixed git-town propose --stack to properly sync branches before proposing (#5973). ------------------------------------------------------------------- Sun Jan 11 08:29:10 UTC 2026 - Johannes Kastl - Update to version 22.4.0: * New Features - sync now has a --gone flag 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). - ship can 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 --stack now supports skipping branches where proposal creation fails instead of aborting by running git town skip (#5869). - config --redact now 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 --stack now skips branches where proposal creation failed but the proposal exists anyways (#5865). - init now correctly persists connector types to the config file (#5817). - sync --all now switches to a branch that is available in the worktree before deleting a shipped branch (#5847). ------------------------------------------------------------------- Sun Dec 14 08:49:57 UTC 2025 - Johannes Kastl - Update to version 22.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 skip gained a --park flag to permanently skip this branch (#5839). - git town config now supports a --redact flag that obfuscates sensitive configuration data like access tokens, making it safer to share configuration in bug reports (#5831). - git town switch gained a --stash flag 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 BROWSER environment 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 sync now switches to a local branch available in the current worktree before deleting the current branch (#5797). - git town sync avoids 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 --beam now works correctly with worktrees and branches without an ancestor (#5690). - git town sync --prune no longer crashes when the current branch has already been shipped at the remote (#5704) - git town walk now skips branches that aren't available in the current worktree (#5714). - git town propose now only opens proposals that are still active (#5745). - The share-new-branches config setting now accepts a wider range of values (#5719). ------------------------------------------------------------------- Sun Nov 02 06:53:48 UTC 2025 - Johannes Kastl - Update to version 22.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 YYYYMM and 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 a hotkey (#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, and GIT_COMMITTER_NAME if they aren't set in Git metadata user.email and user.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 --body tag without content (#5496). - propose: the gh connector no longer crashes if the user chooses Continue in browser (#5681). - sync: pruning a freshly created branch no longer crashes (#5660). - hack: now always sets the correct branch type (#5609). - hack: --beam from 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 --all and --display-types (#5648). - dead links on the "Contributing" tab on GitHub are fixed (#5679). ------------------------------------------------------------------- Tue Oct 14 04:49:11 UTC 2025 - Johannes Kastl - Update to version 22.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). ------------------------------------------------------------------- Wed Sep 24 07:09:02 UTC 2025 - Johannes Kastl - Update to version 22.0.0: * BREAKING CHANGES - Renamed the codeberg connector to forgejo since it supports all Forgejo-based forges. Codeberg itself runs on Forgejo (#5447). - Start the setup assistant with git town init instead of git town config setup, matching Git's git 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, and prototype commands no longer signal a problem when you run them on a branch that already has the desired type. - Removed the long-deprecated kill command. 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 --none flag to create perennial branches programmatically. * Bug Fixes - Fixed git town branch in repos with a detached HEAD (#5565). * Dependecies - Go 1.24 (#5559) ------------------------------------------------------------------- Sun Sep 14 12:26:10 UTC 2025 - Johannes Kastl - Update to version 21.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, and prepend commands 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 feature command 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). ------------------------------------------------------------------- Wed Aug 20 06:07:44 UTC 2025 - Johannes Kastl - Update to version 21.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) ------------------------------------------------------------------- Wed Aug 20 06:03:03 UTC 2025 - Johannes Kastl - Update to version 21.4.2: * Bug Fixes - Git Town no longer mistakes legit file conflicts for phantom conflicts (#5156, #5140) - delete: Git Town now rebases onto the correct branch (#5358) ------------------------------------------------------------------- Wed Aug 06 05:28:11 UTC 2025 - Johannes Kastl - Update to version 21.4.1: * Bug Fixes - Fixes parsing of the new Git metadata config entries that disable auto-resolving phantom conflicts (#5326). ------------------------------------------------------------------- Mon Aug 04 04:58:13 UTC 2025 - Johannes Kastl - Update to version 21.4.0: * New Features - The setup assistant now correctly handles existing configuration settings in global Git metadata (#5201) - When Git Town is unconfigured, it now runs the full setup assistant instead of just asking for the main branch (#5057) - git town set-parent now presents the same hierarchical branch list as git town switch (#5259) - When prompting for a parent branch, Git Town now also shows the hierarchical list from git town switch (#5266) - Added a configuration option and CLI switch to disable automatic resolving of phantom merge conflicts for cases where manual conflict resolution is preferred (#5317) * Bug Fixes - Phantom merge conflicts are now auto-resolved even when your stack is rooted in a perennial branch instead of the main branch (#5193) - The glab connector now correctly updates merge proposal targets (#5283) - Git Town now also removes branch type overrides when it deletes branches that were shipped at the remote (#5274) - The setup assistant now cleans up local Git metadata when you opt to save configuration globally (#5230) ------------------------------------------------------------------- Mon Aug 04 04:52:07 UTC 2025 - Johannes Kastl - Update to version 21.3.0: * New Features in setup assistant: - now creates configuration files with name git-town.toml instead of the deprecated git-branches.toml (#5162) - now gives the user a chance to enter the observed regex and contribution regex, (#5133, #5132) - when entering perennial branches, the main and perennial branches from the config file are now preselected and locked (#5154) - no longer asks for the dev remote if only one Git remote exists (#5153) - now updates Git metadata only if the user entered a different value than already exists (#5127) - no longer creates commented out entries (#5110) - now explains how to run it manually (#5155) * Bug Fixes - updating the base branch in a stack using the gh connector works now (#5163) - setup assistant: - now displays the entered value for the API token scope (#5144) - more consistent dialog captions (#5159) ------------------------------------------------------------------- Mon Aug 04 04:48:34 UTC 2025 - Johannes Kastl - Update to version 21.2.0: * New Features - Git Town can now use GitHub's gh CLI to talk to the GitHub API. No more messing with access tokens manually! (#1639) - GitLab users get the same treatment: Git Town now integrates with the glab CLI to access the GitLab API (#5079). - Dropped the dependency on which on Unix-like systems. One less external tool to worry about (#5060). - Git Town is now in the official Arch Linux repositories. Install with pacman -S git-town (#5015). - Git Town is now also available on OpenSUSE Stable and Tumbleweed. - The Setup Assistant now validates the forge information you enter works. If the connection fails, you get a chance to enter the credentials again. No more silent misconfigurations. (#3030). * Bug Fixes - git town diff-parent now shows only the changes introduced by the current branch, even when it's behind its parent (#5053). - The GitLab connector now handles the --title and --body arguments correctly (#5072). - Continuing a suspended Git Town command that needs forge access now works correctly in all edge cases (#5098). - All interactive dialogs now render properly in 80-character-wide terminals (#5074). - The setup assistant now correctly pre-selects the token scope you previously configured (#5046). ------------------------------------------------------------------- Tue Jun 17 11:54:03 UTC 2025 - Johannes Kastl - Add Requires for git-core ------------------------------------------------------------------- Mon Jun 16 05:40:59 UTC 2025 - Johannes Kastl - new package git-town: Git branches made easy